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)?