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 StringGrid verhält sich komisch (https://www.delphipraxis.net/134044-stringgrid-verhaelt-sich-komisch.html)

Mike_on_Tour 14. Mai 2009 17:34


StringGrid verhält sich komisch
 
Hallo,

ich habe ein StringGrid auf einer Form und einen Button. Beim Start werden Daten in das Grid geschrieben und dann wird der Button geklickt. Es wird ein neues Fenster geöffnet. Nach dem Schließen dieses Fensters ist der Focus noch auf dem Button. Wenn ich jetzt auf die erste freie Zelle oben links klicke, kann ich dort Daten eingeben, obwohl ich mit dem Ereignis OnSelectCell für diese Spalte angebe:
Delphi-Quellcode:
CanSelect := false;
Im Debugger wird als erstes Ereignis aber OnMouseDown angesprungen. Bei anderen Zellen des Grids funktioniert alles wunderbar. Ich weiß zur Zeit keine Lösung.

Nachtrag: Das Grid verhält sich nur so beim ersten Klick nach dem Schließen des zweiten Fensters. Wenn ich dann in andere Zellen klicke und danach wieder in die erste Zelle oben links, kann ich diese Zelle nicht mehr editieren. Sollte es auch ja auch schon beim ersten Klick sein. Folgende Grid-Option sind eingestellt:
Delphi-Quellcode:
goEditing := true;
goFixedVertLine := true;
goFixedHorzLine := true;
goVertLine := true;
goHorzLine := true;

alles andere ist FALSE
Mike

Lannes 14. Mai 2009 18:53

Re: StringGrid verhält sich komisch
 
Hallo,

setz mal in OnSelectCell einen Haltepunkt, denn vermutlich wird OnSelectCell nicht ausgelöst, weil die erste Zelle zu dem Zeitpunkt schon selectiert ist.

also :arrow: eine Zelle, die editiert werden darf, vorher selectieren.

Mike_on_Tour 15. Mai 2009 07:37

Re: StringGrid verhält sich komisch
 
Ich habs doch geschrieben: ich habe ein OnSelectCell und ein OnMouseDown.

In OnSelectCell prüfe ich, ob die Zelle überhaupt selektiert werden darf. Das OnMouseDown brauche ich zur Ermittlung der Position Maus und Zelle für die weitere Arbeit. Und natürlich habe ich auf beide Ereignisse einen Haltepunkt gesetzt. Und natürlich wird OnSelect beim ersten Mal nicht ausgelöst. Steht alles im ersten Text.

Die Möglichkeit, daß die Zelle bereits selektiert ist, besteht allerdings. An einer anderen Stelle im Programm, ebenfalls mit einem StringGrid und Button konnte ich das Problem jedoch nicht feststellen. Ich muß da nochmal nachschauen.

Mike_on_Tour 15. Mai 2009 10:54

Re: StringGrid verhält sich komisch
 
Also, ich konnte keine weiteren Unterschiede feststellen. Trotzdem verhalten sich beide Grids unterschiedlich.

Ich habe jetzt in OnSelectCell noch folgende Zeilen am Ende eingebaut:
Delphi-Quellcode:
  if (CanSelect)
    then begin
      GridData.Options := GridData.Options + [goEditing];
    end
    else begin
      GridData.Options := GridData.Options - [goEditing];
    end;
Damit bekomme ich das Grid-Verhalten, was ich möchte.


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