Calc Tabellen-Grid

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Calc Tabellen-Grid

Beitrag von kalle2005 »

Hallo Freunde von AOO

Nachdem ich mich ausgiebig mit mehrseitigen Dialoge beschäftigt habe, möchte ich mich nun zum ersten Mal mit dem Grid beschäftigen.

Von Tom (Toxitom) habe ich seine Beispieldatei geändert bzw. ergänzt indem ich eine Personenliste eingefügt habe.

Nachdem ich dann endlich begriffen habe, dass ich die Dimension zu beachten habe, funktioniert auch die MsgBox.

Nun komme ich nicht weiter:

Es fehlt mir die Einstellung für Formate. Meine Versuche z. B. das Geburtsdatum in „DD.MM.YY“ zu ändern scheiterten.

Code: Alles auswählen

if i =4 then.FormulaLocal= ("DD.MM.YY")
if i = 4 then . Format("DD.MM.YY")
Desweiteren fehlt mir die Möglichkeit (die Erfahrung), den aktuellen Datensatz in einem Dialog darzustellen bzw. ggf. zu ändern.

Außerdem frage ich mich, ob ich Hscroll etc. deklarieren muss.
Tom schreibt nur „dim oDlg as variant“. In seiner Anleitung "Grid Doku_TableGridinDialogen_MIC".pdf finde ich keine Formatierungshinweise.
Vielleicht kann mir jemand helfen.
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Calc Tabellen-Grid

Beitrag von kalle2005 »

Hallo Leute,
ich habe vergessen, die Datei einzustellen.
Vielleicht ist es jetzt deutlicher, was ich beabsichtige.
Gruß
Kalle
Dateianhänge
Meins.ods
(31.38 KiB) 81-mal heruntergeladen
Win 10 Pro, AOO 4.1.9
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Tabellen-Grid

Beitrag von Stephan »

Es fehlt mir die Einstellung für Formate. Meine Versuche z. B. das Geburtsdatum in „DD.MM.YY“ zu ändern scheiterten.
z.B. verändere die vorhandene Funktion "GetTabellenDaten_Bsp1" wie folgt:

Code: Alles auswählen

function GetTabellenDaten_Bsp1
  dim aDaten()
  oDataModel = createUnoService("com.sun.star.awt.grid.DefaultGridDataModel")
  aDaten = thisComponent.getSheets.getByName("Tabelle1").getCellRangeByName("A7:E11").getDataArray()
  For i = 0 To UBOUND(aDaten())
  	aDaten(i) (4) = Format(aDaten(i) (4), "DD.MM.YY")
  Next i
  GetTabellenDaten_Bsp1 = GridDatenFuellen(oDataModel, aDaten())
end function
Desweiteren fehlt mir die Möglichkeit (die Erfahrung), den aktuellen Datensatz in einem Dialog darzustellen bzw. ggf. zu ändern.
Hier ist ein Anfang. WEnn Du das bestehende Makro "" so erweiterst bekomst Du zumindest schon die Werte im Änderungsdialog angezeigt.

Code: Alles auswählen

Sub Person_bearbeiten()
    oDoc = thisComponent
    oSheet =  ThisComponent.Sheets().getByName("Tabelle1") 
    ThisComponent.getCurrentController().setActiveSheet(oSheet)
    DialogLibraries.LoadLibrary( "Bsp_TableGrid" )
    DlgHauptdialog = CreateUnoDialog( DialogLibraries.Bsp_TableGrid.DlgPersAendern)
    DlgHauptdialog.Model.Step = 1

if oDlg.getControl("tab_g1").hasSelectedRows() then 
aZeile =oDlg.getControl("tab_g1").model.GridDataModel.getRowData(oDlg.getControl("tab_g1").getCurrentRow)
End if

With DlgHauptdialog
	.getControl("CB3").Text = aZeile(1)
	.getControl("txt_vorname").Text = aZeile(2)
	.getControl("txt_nachname").Text = aZeile(3)
	.getControl("date_geburtsdatum").Text = aZeile(4)
	'.getControl("TField14").Text = aZeile(2)

End With

DlgHauptdialog.Execute()
End Sub

Gruß
Stephan
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Calc Tabellen-Grid

Beitrag von kalle2005 »

Hallo Stephan,
wie immer sind deine Vorschläge erfolgversprechend. So auch dieses Mal. Die markierte Zeile wird im Dialog angezeigt und auch das Datum in einem lesbaren Format. Nun wollte ich diese Daten verändern. Bis auf die Combobox konnte ich kein Textfeld beschreiben. Beim Abspeichern wird die markierte Zeile in Zeile 1 ab Spalte B der Tabelle geschrieben.
Zunächst dachte ich, es liegt noch an dem offenen Grid. Mit einer Sub im Modul xAenderung konnte ich das Grid beenden. Doch eine Bearbeitung im Dialog war trotzdem nicht möglich.
Was muss ich tun ?
Lieben Gruß
Kalle
Win 10 Pro, AOO 4.1.9
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc Tabellen-Grid

Beitrag von Stephan »

Bis auf die Combobox konnte ich kein Textfeld beschreiben.
in der Basic-IDE kannt Du für alle Steuerelemente den Eigenschaftsdialog anzeigen, dort musst Du für die Textboxen des Dioalogs die Eigenschaft "NurLesen" von "ja" auf "Nein" einstellen, dann kannst Du dort etwas schreiben.
Beim Abspeichern wird die markierte Zeile in Zeile 1 ab Spalte B der Tabelle geschrieben.
im Code steht mehrmals die jeweils ähnliche Zeile:

Code: Alles auswählen

 oCelle = oSheet.getCellByPosition(1, j)
Dort musst Du nur j passend angeben. Es wird derzeitig inn die erste Zeile geschrieben, weil j keinen Werrtt hat und also = ikst und weil 0 der Index der ersten Zeile ist.
So wie die Makros konkret beschaffen sind gibt Dir aZeile(0) eine Zahl, dabei ist die Zahl der 1. Grid-Zeile die 1, welche mit der Tabellenzeile 7 korrespondiert (Index 6), also muss der Code (NICHT getestet) lauten:

Code: Alles auswählen

Sub Aenderung_speichern()

Dim oZellbereich as Object

aZeile =oDlg.getControl("tab_g1").model.GridDataModel.getRowData(oDlg.getControl("tab_g1").getCurrentRow)

j = aZeile(0) + 5

    oDoc = ThisComponent
    oSheet =  oDoc.Sheets().getByName("Tabelle1")
    
   oCelle = oSheet.getCellByPosition(1, j)  
   oCelle.String = DlgHauptdialog.getControl("CBAnrede").Text 
   
   oCelle = oSheet.getCellByPosition(2, j)  
   oCelle.String = DlgHauptdialog.getControl("txt_vorname").Text 
   
   oCelle = oSheet.getCellByPosition(3, j)  
   oCelle.String = DlgHauptdialog.getControl("txt_nachname").Text 
     
   oCelle = oSheet.getCellByPosition(4, j)  
   oCelle.FormulaLocal = DlgHauptdialog.getControl("date_geburtsdatum").Text
End Sub



Gruß
Stephan
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Calc Tabellen-Grid

Beitrag von kalle2005 »

Hallo Stephan,
ja deine Erfahrung müsste ich haben, um die Eigenschaft eines Textfeldes zu überprüfen. Es ist für mich ein Rätsel, warum nur Lesen eingestellt war.
So etwas steht auch nicht in den Pdf-Dateien, die ich rauf und runter gelesen habe.
Kurz und gut: es funktioniert alles !!!
Vielen Dank.
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
Antworten