Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Grafische Komponente in Delphi entwickeln

  Alt 26. Jun 2004, 07:53
der Fehler liegt bei
Canvas.Rectangle(5, 5, 10, 10); Zum Zeitpunkt des Create hat die Komponente noch kein Parent und somit auch keine Canvas und somit kommt ein fehler. Man sollte in jedem fall soetwas in der Paint-Methode machen um sicherzustellen das eine Canvas vorhanden ist denn Paint wird nur aufgerufen wenn auch eine Canvas vorhanden ist
Delphi-Quellcode:
TPendel = class(TGraphicControl)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;

    procedure Paint; override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

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

constructor TPendel.Create;
begin
  inherited Create(AOwner);
end;

procedure TPendel.Paint;
begin
  //eventuell noch "inherited Paint" wenn du die ursprüngliche Paintmehtode ausführen willst
  Canvas.Rectangle(5, 5, 10, 10);
end;

Warum bist du eigentlich von TWinControl auf TGraphiccontrol umgestiegen? TWinControl hat ein Handle, TGraphiccontrol nicht und somit zeichnet sich deine Komponente immer auf das Parentcanvas...
Wenn deine Componente auch einen Button überdecken können soll würde ich von TCustomControl ableiten, dann hast du auch ein Handle...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat