Sorry, aber brauche hier doch nochmal eure Hilfe!
Also habe folgenden Code:
Delphi-Quellcode:
unit GraphicButton;
interface
uses
SysUtils, Classes, Controls, Graphics, Types;
type
TGradientStyle = (gsVertical, gsHorizontal);
TGraphicButton =
class(TCustomControl)
private
FBorderSize: Integer;
FBorderColor,
FColor: TColor;
FPicture: TBitmap;
property Canvas;
procedure SetPicture(Value: TBitmap);
protected
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
procedure Repaint;
override;
published
property BorderSize: Integer
read FBorderSize
write FBorderSize;
property BorderColor: TColor
read FBorderColor
write FBorderColor;
property Color: TColor
read FColor
write FColor;
property Picture: TBitmap
read FPicture
write SetPicture;
end;
procedure Register;
implementation
constructor TGraphicButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FPicture := TBitmap.Create;
Picture := TBitmap.Create;
end;
destructor TGraphicButton.Destroy;
begin
FPicture.Free;
Picture.Free;
end;
procedure TGraphicButton.Repaint;
begin
Canvas.Pen.Width := BorderSize;
Canvas.Pen.Style := psInsideFrame;
Canvas.Pen.Color := BorderColor;
Canvas.Brush.Color := Color;
Canvas.Rectangle(0, 0, Width, Height);
end;
procedure TGraphicButton.SetPicture(Value: TBitmap);
begin
FPicture.Assign(Value);
Repaint;
end;
procedure Register;
begin
RegisterComponents('
Eigene', [TGraphicButton]);
end;
end.
Funktioniert aber garnicht! Erstens kann ich immernoch kein Bild laden! Die Prozedur SetPicture wird allerdings aufgerufen, weil danach der Button gemalt wird (mit Farbe). Außerdem wird sonst mein Button nicht gezeichnet, also auch nicht im kompilierten Programm.
Beim Beenden des Programms wird ein Fehler ausgegeben, was, denke ich mal, am Free der Images liegt...