Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnSelectCell Überschreiben (https://www.delphipraxis.net/5800-onselectcell-ueberschreiben.html)

Lati 19. Jun 2003 14:41


OnSelectCell Überschreiben
 
Hi ,
Ich hoffe einer von euch kann mir bei meinem kleinen Problem helfen.

Erstmal zum Ursprung.
Ich habe ein kleines Programm geschrieben welches Telnr,Usw. verwaltet 8anfangs mit listbox) nun wollte ich das ganze mit einem stringgrid ausbauen.
Damit ich dem user nun erlauben kann einträge zu adden oder zu löschen wärs relativ einfach wenn ich OnSelectCell benutzen könnte(es würde wohl auch manuell gehen nur wärs sehr umständlich). Mein Problem ist aber das sämtliche Stringrids (26 an der Zahl[Alphabet]) manuell createt wurden.
Und ich weiss nun nicht recht wie ich auf die OnSelectCell function zugreifen kann. Theoretisch müsste ich sie für jeden StringGrid Überschreiben oder :?: .
Am Ende würde ich gerne einfach nur beim Select ACol und ARow abspeichern können.

Ich hoffe einer von euch knn mir helfen :)

achja wenn es helfen sollte hier der Quelltext des creates

Delphi-Quellcode:
  procedure create_stringgrids;
   Var i : Byte;
   begin
    for i:=1 to 26 do
     begin
      FStringGrid[i]:=TStringGrid.create(Form1);
      with FStringGrid[i] do
       begin
        Parent:= FTabsheet[i]; //Array der Tabsheets im FPageControl
        Name:= 'StringGrid' +chr(64+i);
        ColCount:=5;
        RowCount:=8;
       end;
     end;
     groesse_stringgrid;
   end;
[Edit=Sakura]Delphi-TAGs eingefügt; Doppelpost gelöscht. MfG.[/Edit]

Jens Schumann 19. Jun 2003 16:35

Hallo,
ich vermute Deim Problem ist, das Du nicht weißt wie man einem dynamisch erzeugtem Objekt EventHandler zu weist.
Jeder Event-Property kann eine Methode zugewiesen werden. Das Geheimnis ist nur wie man an die Methoden-Signatur (unter Methoden-Signatur versteht man die Anzahl der Parameter und deren Typen) kommt.
Lege ein TStringGrid auf das Formular und erzeuge über den Objektinspektor den OnSelectCell EventHandler.
Der sieht dann so aus
Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin

end;
Jetzt kannst Du diesen Teil kopieren
Delphi-Quellcode:
(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
Damit schreibst Du jetzt folgende Methode
Delphi-Quellcode:
procedure TForm1.MySelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
  // mach hier irgend was
end;
Dein Code wird an entsprechend erweitert:
Delphi-Quellcode:
procedure create_stringgrids;
   Var i : Byte;
   begin
    for i:=1 to 26 do
     begin
      FStringGrid[i]:=TStringGrid.create(Form1);
      with FStringGrid[i] do
       begin
        Parent:= FTabsheet[i]; //Array der Tabsheets im FPageControl
        Name:= 'StringGrid' +chr(64+i);
        ColCount:=5;
        RowCount:=8;
        OnSelectCell:=MySelectCell;
       end;
     end;
     groesse_stringgrid;
   end;
Über den Parameter Sender kannst Du feststellen welches TStringGrid das Event gefeuert hat.


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