![]() |
einzelne Zeile im DBgrid bearbeiten
Hallo,
ich verwende ein DBGrid. Zur Laufzeit sollen die Zeilen nicht editierbar sein. Der User soll explizid eine Zeile auswählen und mit der rechten Maustaste in einem Popupmenu auf Bearbeiten klicken. Danach soll die Zeile editierbar sein. Das habe ich bis jetzt mit folgendem Code realisiert:
Delphi-Quellcode:
Leider habe ich aber noch kein Ereigniss gefunden wo dgediting wieder entfernt werden könnte. Dies soll geschehen wenn die Zeile Verlassen wird, egal ob mit Cursor, Tab oder Maus. Momentan sind nach dem Klick auf Bearbeiten alle Felder Editierbar.
procedure TForm_Aendernzubehoer.BearbeitenExecute(Sender: TObject);
begin DBGrid1.Options := dbgrid1.Options + [dgediting]; end; Gibt es eine Möglichkeit das der Cursor im Editiermodus an dem letzten Buchstaben steht? Momentan ist die komplette Zeile markiert. mfg Thomas |
Re: einzelne Zeile im DBgrid bearbeiten
Delphi-Quellcode:
DBGrid1.Options := dbgrid1.Options - [dgediting];
|
Re: einzelne Zeile im DBgrid bearbeiten
Du solltest ein StateChange-Ereignis der mit dem Grid verknüpften Datenquelle abfragen, z.B:
Delphi-Quellcode:
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin if TDataSource(Sender).State <> dsEdit then DBGrid1.Options := dbgrid1.Options - [dgediting]; end; |
Re: einzelne Zeile im DBgrid bearbeiten
Hallo,
ich habe das StateChange-Ereignis verknüpft. Allerdings wird dies nur einmal beim Aufbau des Formulars aufgerufen. Danach nicht wieder und die Zeilen bleiben beim verlassen editierbar. |
Re: einzelne Zeile im DBgrid bearbeiten
Also, ich habe das getestet und das Ereignis wird bei jedem Statuswechsel definitiv aufgerufen. Du musst das Ereignis natürlich an die richtige Datenquelle binden (die selbe, die Du auch mit dem Grid verbunden hast).
|
Re: einzelne Zeile im DBgrid bearbeiten
Hallo,
ich habe das im Objektinspektor vom DBGrid unter Datasource im OnState Change Feld eingefügt. Da sollte doch die gleiche Source verwendet werden. Ich habe dann in der entsp. procedure einen Haltepunkt gesetzt. Irgendwie wird bei mir die Prozedure nur beim Programmstart aufgerufen.
Delphi-Quellcode:
Dem DBGrid1 ist auch die Datasource1 zugeordnet.
procedure TForm_Aendernzubehoer.DataSource1StateChange(Sender: TObject);
begin if Tdatasource(sender).State <> dsedit then dbgrid1.options := dbgrid1.Options - [dgediting]; end; Muß am Grid noch eine Einstellung vorgenommen werden? mfg Thomas |
Re: einzelne Zeile im DBgrid bearbeiten
Hallo,
also ich bin schon mal ein Stück weiter. Der Status ändert sich bei mir auch wenn ich eine Veränderung in der Zeile vornehme. Der Status ändert sich aber nicht wenn ich im Bearbeitungsmodus bin und ich ändere an der Zeile nicht sondern drücke nur die Tab oder Cursour Taste. Da wird automatisch die nächste Zeile bearbeitet. In meinem Fall soll dann aber der Bearbeitungsmodus wieder entfernt sein. Gibt es dafür auch ein Ereigniss? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz