Announcement

Collapse
No announcement yet.

OnPaint Ereignis bei TPanel

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

  • OnPaint Ereignis bei TPanel

    Ich möchte gern auf einem Panel Canvas zur Verfügung haben, darauf zeichnen und auf Mausklick reagieren können. Canvas und Paint habe ich zugänglich gemacht. Aber ein "Property OnPaint", wie z.B. in TForm, wird abgelehnt ("Eigenschaft OnPaint existiert nicht in der Basisklasse"). Wenn ich über TMyPanel.Canvas zeichnen will, müsste ich den Code eigentlich in ein OnPaint-Ereignis schreiben, damit es laufend angezeigt wird. Wie kann ich das lösen?

    mfg Klaus-Peter

  • #2
    Leg eine PaintBox aufs Panel

    Comment


    • #3
      Hallo,

      Du musst einfach die Methode Paint überschreiben. Die Methode wird immer dann ausgelöst sobald die Komponente neugezeichnet wird, also genau das was Du suchst. Schau mal in die Basis-Komponente, da solltest Du die überschriebene Methode finden.

      Cia

      Comment


      • #4
        Hallo,
        Das Problem ist nur, ich würde gern so ein OnPaint-Ereignis haben, wie in TForm oder eben in der Paintbox. Ob das machbar wäre und wenn, wie?

        mfg Klaus-Pete

        Comment


        • #5
          Hallo,

          dazu musst Du zuerst ein Property OnPaint:TNotifyEvent.... in Deinem Objekt definieren. Anschließend überschreibst Du die Methode Paint ( s.o. ). Dort löst Du dann das Event aus:

          If assigned ( fOnPaint ) then
          fOnPaint ( Self );

          Ciao

          Torste

          Comment


          • #6
            Erst einmal Vielen Dank für die Hilfe.
            Ich habe Torstens Hinweis befolgt un stelle mal die Komponente TPaintPanel vor, auf der man zeichnen kann und die ein Canvas besitzt und ein Ereignis OnPaint.
            <pre>
            unit PaintPanel;

            interface

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

            type
            TPaintPanel = class(TPanel)
            private
            { Private-Deklarationen }
            FOnPaint: TNotifyEvent;
            protected
            { Protected-Deklarationen }
            procedure Paint; override;
            public
            { Public-Deklarationen }
            property Canvas;
            published
            { Published-Deklarationen }
            property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
            end;

            procedure Register;

            implementation

            procedure TPaintPanel.Paint;
            begin
            inherited;
            if assigned(fOnPaint) then fOnPaint(Self);
            end;

            procedure Register;
            begin
            RegisterComponents('Beispiele', [TPaintPanel]);
            end;

            end.
            </pre>

            mfg Klaus-Pete

            Comment


            • #7
              Die Komponente und ein Beispiel dazu kann man finden auf:
              http://www.delphi-download.de

              mfg Klaus-Peter

              und vielen Dank für die Hilfe

              Comment

              Working...
              X