Meine Komponente ist abgeleitet von TPanel und enthält unter anderem eine TrackBar-Komponente. Nun möchte ich das OnChange-Ereignis der TrackBar in die neue Komponente übernehmen, aber wie?
Announcement
Collapse
No announcement yet.
Events vererben! WICHTIG!
Collapse
X
-
Hi,
du sagst, deine Komponente enthält eine TTrackbar, und du möchtest
deren OnChange-Ereignis in deiner Koponente auswerten können, richtig?
Dann könnte das ungefähr so aussehen:
<Font Face="Courier New">
<B>type</B> TMyPanel = <B>class</B>(TPanel)<BR>
<B>private</B><BR>
TrackBar: TTrackBar;<BR>
<B>public</B><BR>
<B>constructor</B> Create;<BR>
<B>property</B> OnChange;<BR>
<B>end</B>;<BR><BR>
<B>constructor</B> TMyPanel.Create;<BR>
<B>begin</B><BR>
FTrackbar := TTrackbar.Create;<BR>
OnChange := TTrackbar.OnChange;<BR>
<B>end</B>;<BR>
Hoffe das hilft dir, Motz
-
Hi
Ich meine so kann das nicht funktionieren, da Du das "leere" OnChange Event der Trackbar an das OnChange Event des Panels weitergibts.
<pre>
<b>type</b>
TMyPanel = <b>class</b>(TCustomPanel)
<b>private</b>
FOnChange: TNotifyEvent;
FTrackbar: TTrackbar;
<b>protected</b>
<b>procedure</b> DoTrackbarChange(Sender: TObject);
<b>public</b>
<b>constructor</b> Create(AOwner: TComponent); <b>override;</b>
<b>published</b>
<b>property</b> OnChange: TNotifyEvent <b>read</b> FOnChange <b>write</b> FOnChange;
<b>end</b>;<br>
<b>procedure</b> TMyPanel.DoTrackbarChange(Sender: TObject);
<b>begin</b>
<b>if</b> Assigned(FOnChange) <b>then</b> FOnChange(Self); // oder Sender als Self
<b>end</b>;<br>
<b>constructor</b> TMyPanel.Create(AOwner: TComponent);
<b>begin</b>
<b>inherited</b> Create(AOwner);
FTrackbar.Create(Self);
FTrackBar.OnChange := DoTrackbarChange;
<b>end</b>;<br>
</pre>
Gruß Hage
Comment
Comment