Seite 1 von 1
Calc Tabellen-Grid
Verfasst: Di, 02.03.2021 18:31
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 i
n 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
Re: Calc Tabellen-Grid
Verfasst: Di, 02.03.2021 18:57
von kalle2005
Hallo Leute,
ich habe vergessen, die Datei einzustellen.
Vielleicht ist es jetzt deutlicher, was ich beabsichtige.
Gruß
Kalle
Re: Calc Tabellen-Grid
Verfasst: Di, 02.03.2021 20:27
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
Re: Calc Tabellen-Grid
Verfasst: Mi, 03.03.2021 13:22
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
Re: Calc Tabellen-Grid
Verfasst: Mi, 03.03.2021 15:51
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:
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
Re: Calc Tabellen-Grid
Verfasst: Mi, 03.03.2021 16:16
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