Hallo roter Kasen!
@stahli: Naja, stolz nur, weil ich endlich einen Weg gefunden habe.
Stück Code:
Delphi-Quellcode:
type
TPoly = class(TCustomControl)
private
FForm: TForm;
protected
procedure Paint; override;
procedure _MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
end;
implementation
constructor TPoly.Create(AOwner: TComponent);
begin
inherited;
FForm := TForm.CreateParented(TForm(AOwner).Handle); // Der Cast ist Murks, einer auf TWinControl dürft auch gehen
FForm.BorderStyle := bsNone;
FForm.Width := Width;
FForm.Height := Height;
FForm.Color := clRed; // nur damit man es gut sieht zum Test
FForm.OnMouseMove := _MouseMove;
FForm.Top := Top;
FForm.Left := Left;
FForm.Visible := true;
FForm.BringToFront;
end;
destructor TPoly.Destroy;
begin
FForm.Free;
inherited;
end;
procedure TPoly._MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
inherited;
self.Color := clFuchsia; // Um zu sehen, ob das Event ankommt. Es wird normal noch etwas gezeichnet, das hab ich hier rausgenommen
end;
procedure TPoly.Paint;
begin
inherited;
// Um das Form immer brav mitzuziehen
FForm.Left := Left;
FForm.Top := Top;
FForm.Width := Width;
FForm.Height := Height;
FForm.BringToFront;
end;
Was noch fehlt sind ein paar Methoden, damit die Komponente im Designer wieder anwählbar ist und dergleichen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)