Delphi-PRAXiS

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/)
-   -   Delphi Wie im Stringgrid auf Zellenänderungen reagieren ? (https://www.delphipraxis.net/7688-wie-im-stringgrid-auf-zellenaenderungen-reagieren.html)

Hansa 19. Aug 2003 10:24


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.

sakura 19. Aug 2003 10:48

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
 
Wie wäre es denn mit OnSetEdit ;-)

...:cat:...

Hansa 19. Aug 2003 11:07

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.

JoelH 19. Aug 2003 11:51

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.

sakura 19. Aug 2003 11:57

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
 
Ja meinte ich ;-)

Zitat:

Zitat von Hansa
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.

Nimm mal nicht gerade eine ShowMessage :roll: Da geht der Fokus aus dem Grid verloren. Das mach nut Probleme. Setze zum Test liebe die Caption des Forms.

...:cat:...

Taladan 19. Aug 2003 11:58

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:
property Row;
property Col;
jetzt kannst du mit
Delphi-Quellcode:
 MyStringGrid.row
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.

Keldorn 19. Aug 2003 17:06

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?
 
Hallo

onsetedittext würd ich auch nicht nehmen, ich würd bei onselectcell beliben

Delphi-Quellcode:
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;
habs nich groß getestet, sollte aber gehen.

Mfg Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 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