![]() |
DBGrid Ereignis nach drücken von Enter.
Hallo,
Ich suche ein Ereignis für mein DBGrid welches ausgelößt wird nachdem ich in eine Zelle etwas eingetragen und Enter gedrückt habe. Ich habe schon zich Sachen ausprobiert aber keines erzielte das gewünschte Ergebnis, nur nahe dran wie z.B. OnColExit etc. Sorry falls ich im falschen Bereich schreibe, war mir nicht ganz sicher :) Schonmal danke für eure Antworten. mfg Alex |
Re: DBGrid Ereignis nach drücken von Enter.
Wenn ich das richtig verstanden habe, musst Du auf AfterPost von TDataset reagieren.
|
Re: DBGrid Ereignis nach drücken von Enter.
Hmm nein, das funktioniert leider nich, also ich habe mir das so gedacht das ich den post auf die Datenbank mache sobald die Entertaste gedrückt wurde, also die Eingabe für die Zelle abgeschlossen wurde, mache.
Den "post" mache ich zZ. sowieso mit einem SQL-Update aber es fehlt nunmal das richtige Ereignis :( |
Re: DBGrid Ereignis nach drücken von Enter.
Hallo,
das könnte Dein Kandidat sein:
Delphi-Quellcode:
Wenn Key = #13, dann wurde Enter gedrückt.
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Naja, was willst Du denn machen? Hier weißt Du ggfls. dass Enter gedrückt wurde, aber Du weißt nicht wo. Wenn ich das richtig sehe, schaltet Enter zwischen bearbeiten und nichtbearbeiten einer Zelle um. An den Datensatz müsstest Du damit kommen. Fragt sich jetzt nur noch, welche Spalte bearbeitet wurde oder werden soll. Für Deine Aufgabenstellung dürfte es aber reichen.
Delphi-Quellcode:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin Case key of #13 : DBGrid1.DataSource.DataSet.Post; // Naja, hier nicht abfragen, ob Edit oder Insert ... end; end; |
Re: DBGrid Ereignis nach drücken von Enter.
Hmm klappt leider auch nicht :( er startet das Event nur nachdem ich die Eingabe schon abgeschlossen habe, also ich einmal Enter gedrückt habe und danach einfach nochmal in dem DBGrid Enter drücke ohne eine Zelle "offen" zu haben.
Hat vielleicht sonst noch jemand Vorschläge? mfg Alex |
Re: DBGrid Ereignis nach drücken von Enter.
Ich habs rausgefunden :D man muss das AfterFieldChange Ereignis der Query benutzen, allerdings muss man aufpassen das man in dem Ereignis direkt nicht die Felder mit Query.FieldByName() := ... verändert weil man sich sonst in einer Endlosschleife befindet und einen Stack Overflow bekommt ;)
Vielleicht kann der Thread ja mal jemandem helfen. mfg Alex |
Re: DBGrid Ereignis nach drücken von Enter.
Ich mach das so: ich setze 'Form.KeyPreview := true' und schaue dann im Form.OnKeyDown, wer gerade den Fokus hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr. |
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