AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie im Stringgrid auf Zellenänderungen reagieren ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie im Stringgrid auf Zellenänderungen reagieren ?

Ein Thema von Hansa · begonnen am 19. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 10:24
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 10:48
Wie wäre es denn mit OnSetEdit

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 11:07
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?

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.
Gruß
Hansa
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#4

hmm,

  Alt 19. Aug 2003, 11:51
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 11:57
Ja meinte ich

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 Da geht der Fokus aus dem Grid verloren. Das mach nut Probleme. Setze zum Test liebe die Caption des Forms.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 11:58
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
 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.
Marco
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Wie im Stringgrid auf Zellenänderungen reagieren ?

  Alt 19. Aug 2003, 17:06
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  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 17:45 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