Ich habe eine Komponente, abgeleitet von TComponent, in der ich eine ImageList (TImageList) auswählen kann. Dazu habe ich noch eine Property Image (TImageIndex) um einen entspechendes Images auszuwählen. Mein Problem ist, dass in der Combobox (im Objektinspektor) von Images kein Images angezeigt wird. Mit ist nicht ganz klar, wie ich der Variable vom Type TImageIndex klar machen soll aus welcher Imageliste die Images geladen und angezeigt werden sollen!
Hier mal ein die Komponente:
unit Test;
interface
uses
Windows,
SysUtils,
Messages,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
Menus,
StdCtrls,
ExtCtrls,
Buttons,
ActnList,
ImgList,
Consts ;
type
TTest = class(TComponent)
private
{ Private-Deklarationen }
FImageList : TImageList;
FImage : TImageIndex;
protected
{ Protected-Deklarationen }
procedure SetImage (const Value : TImageIndex); virtual;
procedure SetImageList (const Value: TImageList);
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published-Deklarationen }
property Images : TImageList read FImageList write SetImageList;
property Image : TImageIndex read FImage write SetImage default -1;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Test', [TTest]);
end;
{ TTest }
constructor TTest.Create(AOwner: TComponent);
begin
inherited create(AOwner);
FImage := -1;
end;
destructor TTest.Destroy;
begin
inherited;
end;
procedure TTest.SetImageList(const Value: TImageList);
begin
FImageList := Value;
if Images <> nil then
begin
Images.FreeNotification(Self);
end;
end;
procedure TTest.SetImage(const Value: TImageIndex);
begin
if Value <> FImage then
begin
FImage := Value;
end;
end;
end.
Hier mal ein die Komponente:
unit Test;
interface
uses
Windows,
SysUtils,
Messages,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
Menus,
StdCtrls,
ExtCtrls,
Buttons,
ActnList,
ImgList,
Consts ;
type
TTest = class(TComponent)
private
{ Private-Deklarationen }
FImageList : TImageList;
FImage : TImageIndex;
protected
{ Protected-Deklarationen }
procedure SetImage (const Value : TImageIndex); virtual;
procedure SetImageList (const Value: TImageList);
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published-Deklarationen }
property Images : TImageList read FImageList write SetImageList;
property Image : TImageIndex read FImage write SetImage default -1;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Test', [TTest]);
end;
{ TTest }
constructor TTest.Create(AOwner: TComponent);
begin
inherited create(AOwner);
FImage := -1;
end;
destructor TTest.Destroy;
begin
inherited;
end;
procedure TTest.SetImageList(const Value: TImageList);
begin
FImageList := Value;
if Images <> nil then
begin
Images.FreeNotification(Self);
end;
end;
procedure TTest.SetImage(const Value: TImageIndex);
begin
if Value <> FImage then
begin
FImage := Value;
end;
end;
end.
Comment