Zeitfeld/Datumsfeld in Dialog Formatübertragung per Macro
Verfasst: Mo 28. Jan 2019, 17:22
Hi Leute,
Momentan arbeite ich an einer Tabelle mit einem Dialog und Macros dafür:
Siehe Anhang Bild
Mir ist etwas interesanntes aufgefallen:
Ich habe ein Zeitfeld erstellt. Egal ob ich ein falsches Zeitformat eingebe wie bsp. "18", zeigt es "18:00" an. Das ist soweit super, denn es soll ja ein Zeitfeld sein mit korrektem Zeitformat ( Formatcheck ist an auf dem Feld)
ABER: Wenn ich meinen Eintrag aus dem Dialog in das Sheet speichere, zeigt es wieder das falsche Format an. Hier mal Beispielcode:
Das gleiche passiert übrigens beim Datumsfeld, allerdings sind da die Restriktionen bei der Eingabe größer, dennoch wenn ich beispielsweise "22.02.2018" eingebe statt dem TT:MM:JJ Format passiert das gleiche Spiel, meine eigentliche Eingabe landet im Sheet und nicht das angezeigte im Dialog.
Meine Vermutung ist ja, es liegt an meiner Übergabe sprich: Cell.String = Control.text
Leider kann ich aber nichts richtiges dazu finden, wie ich beispielsweise sowas: Cell.String = Control.time
Vielleicht könnt ihr ja helfen
Bild und Sheet sind im Anhang.
LibreOffice Version 6.1.3.2(x64)
Momentan arbeite ich an einer Tabelle mit einem Dialog und Macros dafür:
Siehe Anhang Bild
Mir ist etwas interesanntes aufgefallen:
Ich habe ein Zeitfeld erstellt. Egal ob ich ein falsches Zeitformat eingebe wie bsp. "18", zeigt es "18:00" an. Das ist soweit super, denn es soll ja ein Zeitfeld sein mit korrektem Zeitformat ( Formatcheck ist an auf dem Feld)
ABER: Wenn ich meinen Eintrag aus dem Dialog in das Sheet speichere, zeigt es wieder das falsche Format an. Hier mal Beispielcode:
Code: Alles auswählen
REM ***** BASIC *****
Dim oDialog_new_entry As Object
Sub Main()
DialogLibraries.LoadLibrary("Standard")
oDialog_new_entry = CreateUnoDialog(DialogLibraries.Standard.new_entry)
oDialog_new_entry.Execute()
oDialog_new_entry.dispose()
End Sub
Sub save_entry()
ctl_date = oDialog_new_entry.GetControl("ctl_date")
ctl_time = oDialog_new_entry.GetControl("ctl_time")
cell_date = ThisComponent.Sheets(0).getCellRangeByName("A2")
cell_time = ThisComponent.Sheets(0).getCellRangeByName("B2")
cell_date.string = ctl_date.text
cell_time.string = ctl_time.text
oDialog_new_entry.endexecute()
End Sub
Sub abort_entry()
oDialog_new_entry.endexecute()
End Sub
Meine Vermutung ist ja, es liegt an meiner Übergabe sprich: Cell.String = Control.text
Leider kann ich aber nichts richtiges dazu finden, wie ich beispielsweise sowas: Cell.String = Control.time
Vielleicht könnt ihr ja helfen

Bild und Sheet sind im Anhang.
LibreOffice Version 6.1.3.2(x64)