Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   dbgrid im Bearbeitungsmodus (https://www.delphipraxis.net/185903-dbgrid-im-bearbeitungsmodus.html)

khh 16. Jul 2015 14:36

dbgrid im Bearbeitungsmodus
 
Hallo zusammen,
ich habe ein DBGrid mit einer TColumn die ein Timestamp-Feld aus der DB anzeigt.
das Feld ist per DisplayFormat HH:mm formatiert.
Funktioniert fabelhaft ;-)

Per Doppelklick ins Feld wird in den Bearbeitungsmodus umgeschaltet und der Feldinhalt im Format "19.07.2015 19:00:00" angezeigt und editierbar.
Per Eingabe lässt sich aber auch die Uhrzeit editieren, ohne dass das komplette Format angezeigt wird.
Hier nun allerdings wir der Tag automatisch auf Tag 0 (z.B. 30.12.1899 17:00:00) zurückgesetzt.

Wie kann ich das verhindern ?
Ich möchte den ursprünglich gespeicherten Tag erhalten.

Ich danke euch

BadenPower 16. Jul 2015 15:31

AW: dbgrid im Bearbeitungsmodus
 
Zitat:

Zitat von khh (Beitrag 1308895)
Per Eingabe lässt sich aber auch die Uhrzeit editieren, ohne dass das komplette Format angezeigt wird.

Wie?

khh 17. Jul 2015 12:08

AW: dbgrid im Bearbeitungsmodus
 
indem man ohne Doppelklick den enthaltenen Wert einfach z.B. mit 14:30 überschreibt.
Damit setzt man den Tag auf 0 resp. 30.12.1899

BadenPower 17. Jul 2015 12:21

AW: dbgrid im Bearbeitungsmodus
 
Zitat:

Zitat von khh (Beitrag 1309018)
indem man ohne Doppelklick den enthaltenen Wert einfach z.B. mit 14:30 überschreibt.
Damit setzt man den Tag auf 0 resp. 30.12.1899

Ich wollte wissen, wie Du im Grid dafür sorgst, dass Du nur die Uhrzeit anzeigen lässt, welche Du dann bearbeiten kannst.
Das ist entscheident dafür, ob der Tag auf den 30.12.1899 gesetzt wird.

khh 17. Jul 2015 12:49

AW: dbgrid im Bearbeitungsmodus
 
mit :
DisplayFormat HH:mm

khh 18. Jul 2015 14:08

AW: dbgrid im Bearbeitungsmodus
 
jemand ne Idee, ob das per DisplayFormat zu handeln ist ?

Oder gibt es einen anderen Weg?

Ich danke euch

BadenPower 18. Jul 2015 17:20

AW: dbgrid im Bearbeitungsmodus
 
Zitat:

Zitat von khh (Beitrag 1309122)
jemand ne Idee, ob das per DisplayFormat zu handeln ist ?

Da ist ein Problem mit dem Grid selbst.

Wenn Du nachdem die Zelle selektiert ist ohne darauf zu klicken eine Taste bedienst, dann kannst Du den Wert zwar editieren, aber das Grid befindet sich eigentlich nicht im Editiermodus.


Aber auch wenn Du Dich im Editiermodus befindest und das Datum löschst und nur einen Zeitwert angibst, dann wird das Datum auf 0 gesetzt, da dieser Wert dann eigeneben ist, weil er nicht vorhanden ist.

Gib, so wie Du es jetzt mit der Zeit gemacht hast einmal ein Datum ein z.B. 20.01.2015 dann wirst Du sehen, dass die Uhrzeit automatisch auf 00:00:00 gesetzt wird und den Wert, welche voher dastand ignoriert wird.

Ich schaue mir das nochmals genauer an, wenn ich etwas mehr Zeit habe. Schau mal nach EditMask in der TField-Klasse.

khh 19. Jul 2015 08:40

AW: dbgrid im Bearbeitungsmodus
 
ich danke dir

khh 19. Jul 2015 09:46

AW: dbgrid im Bearbeitungsmodus
 
alsoo,
EditMask ist wohl der richtige Weg die Eingabe zu beeinflussen.
Jetzt muss ich nur noch die richtige Maske hinbekommen.
Die diversen Möglichkeiten sind mir noch suspekt :-(

Ich befürchte aber, das verhindert mir immer noch nicht, dass das Datum zurück gesetzt wird :-(

khh 20. Jul 2015 09:22

AW: dbgrid im Bearbeitungsmodus
 
ich habe mir überlegt, per Data.DB.TField.OnGetText und Data.DB.TField.OnSetText

das Datum zu speichern und mit der eingegebenen Zeit wieder zurück zu schreiben.

was meint ihr dazu ?

danke gruss KH


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz