Discussion:
Komponentenentwicklung, Einfluß nehmen auf den Bezeichnertext der automatisch erzeugten Ereignissbehandlungsroutine
(zu alt für eine Antwort)
Georg Hübner
2014-08-03 21:34:45 UTC
Permalink
Hallo,

wenn ich im Objektinspektor - Ereignisse im leeren Feld neben dem Ereignis doppeltklicke,
erzeugt delphi mir automatisch eine Ereignissroutine.
Das funktioniert auch bei meiner selbst geschriebenen Komponente wunderbar.
Nur hat das Ganze einen kleinen Schönheitsfehler. :-(

Der Bezeichner der Procedure setzt sich aus mehreren Klassennamen zusammen und wird damit ellenlang.
Ich kann natürlich diesen Bezeichner im OI per Hand ändern. Schöner wäre es aber, wenn ich hier schon
im Programmcode meiner Komponente entsprechend eingreifen könnte.

Leider habe ich zu diesem Thema nichts im Netz gefunden.

Aufbau der Komponente (Kurzfassung):
TMyItem=class(TCollectionItem);
- enthält ein Ereignis

TMyItems=class(TCollectonItems);
- hier werden über den OI dynamisch TMyItem-Objekte hinzugefügt

TMyKomponent =class(TComponent);
- enthält ein TMyItems-Objekt als Eigenschaft
- empfängt WM_USER+x - Botschaften und ruft die entsprechende MyItems.Item[x]-Procedur auf.

Die von delphi erzeugte Ereignissroutine sieht dann so aus:
procedure MyKomponent1MyItems0MyEvent(Sender: TObject);
begin

end;

Weis jemand etwas dazu oder hat den einen oder anderen Link der mir weiterhelfen könnte?

Mfg


Georg Hübner
Heiko Rompel
2014-08-04 04:53:00 UTC
Permalink
Post by Georg Hübner
Weis jemand etwas dazu oder hat den einen oder anderen Link der mir weiterhelfen könnte?
Schaue Dir mal die "CnWizards" von
"http://www.cnpack.org/showdetail.php?id=740&lang=en" an.

Damit kannst Du z.B. auch einstellen,welches Prefix neue Komponenten
bekommen usw.
Da ich mich noch nicht durch alle Funktionen geschaut habe, ist
vielleicht auch etwas für Dein Problem dabei.

Gruß HEiko
Georg Hübner
2014-08-04 10:55:19 UTC
Permalink
Post by Heiko Rompel
Schaue Dir mal die "CnWizards" von
"http://www.cnpack.org/showdetail.php?id=740&lang=en" an.
Damit kannst Du z.B. auch einstellen,welches Prefix neue Komponenten bekommen usw.
Da ich mich noch nicht durch alle Funktionen geschaut habe, ist vielleicht auch etwas für Dein Problem dabei.
Gruß HEiko
Danke für Deine Antwort. Das ist ein sehr interessantes Tool, aber der Bezeichnertext sollte
aus dem eigenen Code erzeugt werden.
Ich habe mir bei der Entwicklung der eigenen Komponente den Quelltext aus TWebModule
und den zugeröhrigen Klassen dabei angeschaut und Teile für meine eigenen Zwecke
übernommen und angepasst.
Hier lassen sich sogenannte "Actions" dynamisch erzeugen. Im Bezeichnertext ist dann
der Name des ActionItem enthalten.

z.B.:
Im OI steht bei der Eigenschaft "Name" Info
procedure WebModule1InfoAction(Sender...);

Ich habe mir den Code von der Unit Web.HTTPApp.pas genau angesehen, aber wie der
Bezeichnertext für Ereignissbehandlugsroutine dabei beeinflußt wird habe ich nicht gefunden.
Vielleicht habe ich ja auch etwas übersehen.

Mfg


Georg Hübner

Loading...