AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

einzelne Zeile im DBgrid bearbeiten

Ein Thema von thommymail · begonnen am 14. Jan 2007 · letzter Beitrag vom 16. Jan 2007
Antwort Antwort
thommymail

Registriert seit: 30. Dez 2006
Ort: Ostrau
5 Beiträge
 
#1

einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 14:30
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:
procedure TForm_Aendernzubehoer.BearbeitenExecute(Sender: TObject);
begin
DBGrid1.Options := dbgrid1.Options + [dgediting];
end;
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.

Gibt es eine Möglichkeit das der Cursor im Editiermodus an dem letzten Buchstaben steht? Momentan ist die komplette Zeile markiert.

mfg
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 15:01
DBGrid1.Options := dbgrid1.Options - [dgediting];
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 15:38
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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
thommymail

Registriert seit: 30. Dez 2006
Ort: Ostrau
5 Beiträge
 
#4

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 17:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 18:04
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).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
thommymail

Registriert seit: 30. Dez 2006
Ort: Ostrau
5 Beiträge
 
#6

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 14. Jan 2007, 20:21
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:
procedure TForm_Aendernzubehoer.DataSource1StateChange(Sender: TObject);
begin
if Tdatasource(sender).State <> dsedit then
  dbgrid1.options := dbgrid1.Options - [dgediting];
end;
Dem DBGrid1 ist auch die Datasource1 zugeordnet.
Muß am Grid noch eine Einstellung vorgenommen werden?

mfg

Thomas
  Mit Zitat antworten Zitat
thommymail

Registriert seit: 30. Dez 2006
Ort: Ostrau
5 Beiträge
 
#7

Re: einzelne Zeile im DBgrid bearbeiten

  Alt 16. Jan 2007, 21:21
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz