Thema: Delphi Events zur Designtime

Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Events zur Designtime

  Alt 14. Mär 2008, 14:50
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)
  Mit Zitat antworten Zitat