![]() |
Wie im Stringgrid auf Zellenänderungen reagieren ?
Hi,
Wie kann ich darauf reagieren, wenn in einem StringGrid der Wert einer Zelle geändert wird? Am liebsten wäre es mir, wenn das zeilenweise geschehen könnte. D.h.: in der aktuellen Zeile nichts geändert = nichts zu tun, geändert+Verlassen = tu was. Es gibt ja da nichts mit ColExit, RowExit usw. |
Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
Wie wäre es denn mit OnSetEdit ;-)
...:cat:... |
Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
Wenn ich das richtig sehe, meinst Du OnSetEditText und OnGetEditText. Aus der Hilfe werde ich nicht recht schlau. Mir kommt es aber so vor, daß da jeder Tastendruck landet. Aber ein Key-Parameter ist gar nicht deklariert. Weiß da jemand was genaueres als die Hilfe? :mrgreen:
P.S.: es ist noch krassser. Ich habe da eine Showmessage reingemacht. Drücke ich eine einzige Taste, so wird die Zelle geleert und dann nur noch abwechselnd Set/GetEditText durchgeführt. |
hmm,
fang doch onKeyPress und onKeyUp ab , dann kannst du dir merken was gedrückt wurde, also an Tasten und wo dies geschah.
Und via onMouseMove kannste abfangen ob der User die Zeile verlassen hat. |
Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
Ja meinte ich ;-)
Zitat:
...:cat:... |
Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
Nur so ne Idee: Hab es zwar noch net ausprobiert aber bastle dir doch ne komponente mit einer col/row abfrage.
unter published einfach folgende zeile einfügen
Delphi-Quellcode:
jetzt kannst du mit
property Row;
property Col;
Delphi-Quellcode:
einen integerwert abfragen, selbes geht natürlich auch mit col. Ich denke du kannst so dir ne funktion in verbindung mit (onselectcell) basteln, mit der du das wechseln in eine andere Zeile abfragen kannst.
MyStringGrid.row
|
Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
Hallo
onsetedittext würd ich auch nicht nehmen, ich würd bei onselectcell beliben
Delphi-Quellcode:
habs nich groß getestet, sollte aber gehen.
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean); begin //lastvalue in den private - Abschnitt der Form with sender as TStringGrid do begin //einen neue Zelle wurde angeklickt, den wert der alten Zelle (col,row) mit dem gepeicherten wert lastvalue vergleichen if cells[Col,Row]<>lastValue then ListBox1.Items.add('Zelle geändert '+'alt:'+lastValue+';neu:'+cells[Col,Row]); //den Wert der neu auszuwählenden Zelle speichern lastvalue:=cells[acol,arow]; end; end; procedure TForm1.StringGrid1Exit(Sender: TObject); begin //damit auch beim verlassen des grid auf die Änderung reagiert wird with sender as TStringGrid do if cells[Col,Row]<>lastValue then ListBox1.Items.add('Zelle geändert '+'alt:'+lastValue+';neu:'+cells[Col,Row]); end; Mfg Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 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