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/)
-   -   [Gelöst]FMX: eigene Komponente von TStringgrid und SelChanged (https://www.delphipraxis.net/169507-%5Bgeloest%5Dfmx-eigene-komponente-von-tstringgrid-und-selchanged.html)

eddie11 25. Jul 2012 12:14


[Gelöst]FMX: eigene Komponente von TStringgrid und SelChanged
 
Hi allerseits,

ich möchte unter Firemonkey eine eigene Komponente (von TStringGrid abgeleitet) erstellen. Das ist soweit kein Problem.
Nun möchte ich die Prozedur OnSelChanged überschreiben.
Delphi-Quellcode:
type
  TEStringGrid = class(TStringGrid)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
    procedure Painting; override;
    procedure SelChanged; override;
Ich bekomme immer die Fehlermeldung 'Methode SelChanged nicht in Basisklasse gefunden'.

Mit 'Painting' funktioniert es, nur mit 'SelChanged' nicht. Heißt die Prozedur in der Basisklasse von TStringGrid eventuell anders? Aber wie krieg ich den Namen raus?

Danke

eddie11 25. Jul 2012 13:43

AW: FMX: eigene Komponente von TStringgrid und SelChanged
 
ok, hab's gefunden:

TStringGrid ist im Unit FMX.Grid enthalten, und von TCustomGrid abgeleitet. Die entsprechende Methode heißt 'DoSelChanged'

himitsu 25. Jul 2012 14:12

AW: [Gelöst]FMX: eigene Komponente von TStringgrid und SelChanged
 
Zitat:

Zitat von eddie11 (Beitrag 1175844)
Aber wie krieg ich den Namen raus?

Indem du schaust wo OnSelChange deklarieret ist (vorallem auf was READ und WRITE zeigt),
dann arbeitest du dich bis zum Feld vor, wo der Property-Inhalt gespeichert wird
und nun kannst du danach suchen, wo auf dieses Feld zugegriffen wird. Speziell wo das Ereignis aufgerufen wird.
(Aufpassen: Etwas schlechter programmierte Komponenten gehen intern auch auf das Property und nicht auf das Feld los, also besser auch noch nach Aufrufen von Diesem suchen)

Hast du den/die Aufrufe gefunden (muß nicht nur an einer Stelle passieren), dann kannst du schauen, ob sich diese Methode(n) überschreiben lässt. (virtual oder dynamic)
Wenn nicht, dann wiederum die Aufrufe dieser Methode(n) suchen, so lange bis sich was Überschreibbares findet. (wenn nicht, dann hast du Pech, was leider zu oft vorkommt :cry: )


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