Thema: Delphi Linien Komponente

Einzelnen Beitrag anzeigen

Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Linien Komponente

  Alt 19. Sep 2006, 19:26
Hi!
Das hab ich jetzt im Quelltext stehen. (Hab mich erstmal nur für die einfache Linie entschieden.)

Delphi-Quellcode:
unit Line;

interface

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

type
  TLine = class(TComponent)
  private
    A,E:TPoint; //Anfang+Ende
    W:Integer; //Width
    C:TColor; //Color
    Can:TCanvas; /Canvas
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    procedure Draw;
    { Public-Deklarationen }
  published
    property X1:Integer read A.X write A.X;
    property X2:Integer read A.Y write A.Y;
    property Y1:Integer read E.X write e.X;
    property Y2:Integer read E.Y write E.Y;
    property Witdth:integer read W write W;
    property Color:TColor read C write C;
    property Canvas:TCanvas read Can write Can;
    { Published-Deklarationen }
  end;

procedure Register;

implementation


procedure Tline.Draw;
begin
Can.PenPos := A;
Can.Pen.Width := W;
Can.Pen.Color := C;
Can.LineTo(E.X,E.Y);
end;

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TLine]);
end;

end.
Meine Fragen:
1. Can := Form1.Canvas; geht nicht. (Geht schon aber da ist das ja kein Verweis auf Form1.Canvas sondern nur eine Wertübergabe. Und ich möchte einen Verwies.

2.Wie mach ich ein Ereignis? Im meinem Buch steht:

type TEreignis = procedure (Sender: TComponent;var I: Integer) of object;

und dann in der Klasse:

Delphi-Quellcode:
private
FEreignis: TEreignis;
published
property OnEreignis: TEreignis read FEreignis write FEreignis;
Aber wie mach ich, dass das Programm OnEreignis aufruft, wenn irgentwas passiert ist (überzeichnet, geklickt)?
  Mit Zitat antworten Zitat