Announcement

Collapse
No announcement yet.

Wie kann ich ein OnClick-Ereignis für Nachkomme einer TGraphicControl erstellen ?

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

  • Wie kann ich ein OnClick-Ereignis für Nachkomme einer TGraphicControl erstellen ?

    Hallo zusammen,

    ich hab leider nicht viel Erfahrung mit der Komponentenentwicklung und wollte meinem eigenen Knopf den ich von TGraphicControl abgeleitet hab ein OnClick-Ereignis hinzufügen.
    Ich bin für jede Art von Tipp dankbar.

    Bis dann Detlef.

  • #2
    Hallo Detlef,<br>schreibe einfach im published Abschnitt
    property OnClick; <br>Damit veröffentlichst Du das in TControl im protected Abschnitt definierte OnClick Ereignis. Das gilt auch für die anderen Ereignisse. Wenn Dein Komponente noch etwas erledigen soll, bevor/nachdem das Ereigniss ausgelöst wird/wurde solltest Du Die Click Methode von TControl überschreiben.<br>
    <pre>
    <font size="1" face="Verdana">unit GraphicControl1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    type
    TGraphicControl1 = class(TGraphicControl)
    private
    { Private-Deklarationen }
    protected
    { Protected-Deklarationen }
    procedure Click; override; // Click überschreiben
    public
    { Public-Deklarationen }
    published
    { Published-Deklarationen }
    property OnClick; // veröffentlichtes OnClick-Event
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('Mycomps', [TGraphicControl1]);
    end;

    { TGraphicControl1 }

    procedure TGraphicControl1.Click;
    begin
    // Mach hier etwas
    inherited Click; // extra wichtig, denn sonst kein OnClick-Event;
    // oder mach hier was
    end;

    end.
    </font></pre>
    <br>Jens Schuman

    Comment


    • #3
      Hallo Jens,<br>
      <br>
      erstmal danke für die schnelle Antwort. Ich hab irgendwo mal ein Beispiel gesehen in dem das einiges komplizierter aussah. Naja egal, was genau bedeutet eigentlich das "inherited" ? Ich hab das irgendwie noch nicht so wirklich verstanden. Vielleicht kannst Du mir das ja mal erklären, wie Du es einem Kleinkind erklären würdest.(Bin irgendwie zu doof um den Eintrag in der Delphi-Hilfe zu verstehen.)<br>
      <br>
      Bis die Tage Detlef

      Comment


      • #4
        Hallo Detlef,<br>mein Englischlexikon übersetzt inherited mit übernommen. Das ist eigentlich eine ganz gute Übersetzung. Mit inherited Click sagst Du, dass Du nicht die Click Methode in TGraphicControl1 sondern die Click Methode des Vorfahren aufrufen möchtest. Oder anders, inherited Click bedeutet: Rufe die vom Vorfahren übernommene Methode Click auf. Da TGraphicControl als Vorfahre von TGraphicControl1 keine Methode Click implementiert, geht inherited zum Vorfahren von TGraphicControl. In TControl wird dann die Click Methode gefunden und ausgeführt. Wenn Du die VCL-Sourcen hast, dann nimm das Sourceverzeichniss unter Projekt/Optionen mal mit in den Suchpfad auf und debugge das OnClick Ereignis. <br> Das ist ein integraler Bestandteil von OOP. Wenn Du damit noch Probleme hast, solltest Du unbedingt daran arbeiten. In diesem Zusammenhang solltest Du Dir auch darüber klar werden, was Polymorphie in der OOP bedeutet.<br>Jens Schuman

        Comment


        • #5
          Hallo Jens,<br>
          <br>
          ich glaub ich hab noch von relativ wenig Ahnung, was Programmierung betrifft. Von den Büchern über Delphi, die in meinem Schrank stehen hab ich leider noch kein einziges ganz durchgelesen. Vielleicht sollte ich das auch mal machen. <br>
          Wenn ich also jetzt dieses "inherited" nicht verwende entsteht eine neue procedure mit dem selben Namen oder was ?! Naja, das mit dem OnClick-Ereignis hat auf jeden Fall geklappt. <br>
          <br>
          Vielen Dank nochmal<br>
          <br>
          Detlef

          Comment

          Working...
          X