Delphi Eigene Komponete

DD2k3

Mitglied
Hi,

ich hab mal in meiner Freizeit ein bisschen mit erstellen Komponeten verbracht, nun hab ich eine für mich sehr Hilfreiche Komponeten erstellt, die mir eine Checkbox mit Bildern bereitstellt ;), die man selber definieren kann.

Nun ist das Problem, das nachdem ich das Delphi Projekt starte, diese erstmal nicht zu sehen sind, erst wenn ich einmal den Status wechsle. Dabei hab ich aber beachtet, dass die Bilder in Picture geladen werden, zur Entwurfszeit sind die Bilder da und danach nicht mehr. Ich hab nun schon vieles anderes getestet aber kommt leider nicht drauf, von Statuswechsel im Cunstructor bis zum zuweisen des Bildes. Weiters weis ich einfach nicht.

Danke schonmal für Antworten ;)



Code:
unit CheckBoxImage;

interface

uses
  SysUtils, Classes, Controls, Graphics, Messages, ExtCtrls, Windows, Forms, Consts;

type
  TCheckBoxImage = class(TImage)
  private
    FImgChecked, FImgUnchecked : TPicture;
    FChecked : boolean;
    procedure setchecked(Value : Boolean);
    procedure setImgChecked(Value : TPicture);
    procedure setImgUnchecked(Value : TPicture);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor destroy; override;
    procedure Click; override;
  published
    property Checked : Boolean read FChecked write setchecked;
    property ImgChecked : TPicture read FImgChecked write setImgChecked;
    property ImgUnchecked : TPicture read FImgUnchecked write setImgUnchecked;
  end;

procedure Register;

implementation

constructor TCheckBoxImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FImgChecked := TPicture.Create;
  FImgUnchecked := TPicture.Create;


  Picture.Assign(FImgUnchecked); //letzer test Eintrag ;)


end;

destructor TCheckBoxImage.destroy;
begin
  FImgChecked.Free;
  ImgUnchecked.Free;
  inherited Destroy;
end;

procedure TCheckBoxImage.Click;
begin
  Checked := not(Checked);
  inherited Click;
end;

procedure TCheckBoxImage.setchecked(Value : Boolean);
begin
  FChecked := Value;
  if FChecked then Picture.Assign(FImgChecked) else Picture.Assign(FImgUnchecked);
end;

procedure TCheckBoxImage.setImgChecked(Value : TPicture);
begin
  FImgChecked.Assign(Value);
end;

procedure TCheckBoxImage.setImgUnchecked(Value : TPicture);
begin
  FImgUnchecked.Assign(Value);
end;

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TCheckBoxImage]);
end;

end.
 
Auf den ersten Blick würde ich sagen fehlt soetwas wie
FImgChecked.LoadFromFile oder so ähnlich.

Du erzeugst die Bilder nur mit Create.
Woher weiß das Programm, welche Bilddaten in das jeweilige Picture gehören?

vop
 
Die Bilder lad ich mit den Eigenschaften in die Komponente.

Nach dem Delphi neustart ist ja nur die Eigeschaft Picture wieder leer, alles andere bleibt so wie es sein soll.
 
Zurück