Announcement

Collapse
No announcement yet.

Events vererben! WICHTIG!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Events vererben! WICHTIG!

    Tach!<p>
    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?

  • #2
    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>
    &nbsp;&nbsp;<B>private</B><BR>
    &nbsp;&nbsp;&nbsp;&nbsp;TrackBar: TTrackBar;<BR>
    &nbsp;&nbsp;<B>public</B><BR>
    &nbsp;&nbsp;&nbsp;&nbsp;<B>constructor</B> Create;<BR>
    &nbsp;&nbsp;&nbsp;&nbsp;<B>property</B> OnChange;<BR>
    &nbsp;&nbsp;<B>end</B>;<BR><BR>
    <B>constructor</B> TMyPanel.Create;<BR>
    <B>begin</B><BR>
    &nbsp;&nbsp;FTrackbar := TTrackbar.Create;<BR>
    &nbsp;&nbsp;OnChange := TTrackbar.OnChange;<BR>
    <B>end</B>;<BR>

    Hoffe das hilft dir, Motz

    Comment


    • #3
      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

      Working...
      X