Ich muss jetzt weg, bin erst morgen Abend zurück.
Du könntest im Constructor erzeugen und vorladen, ob das jetzt aus Dateien, Imagelisten, Datenbanken oder Resourcen geschieht bleibt Dir überlassen, im Destructor alles wieder freigeben.
Ich hänge mal einen Fetzen an, den ich üblicherweise verwende wenn ich das ganze mit Imagelisten mache....
Delphi-Quellcode:
type
TGPImageWrapper=Class(TObject)
private
FImage: TGPImage;
FStream: TMemoryStream;
public
Constructor Create(AGraphic:TGraphic);overload;
Constructor Create(FileName: String);overload;
Destructor Destroy;override;
Public
Property Image:TGPImage read FImage;
end;
implementation;
constructor TGPImageWrapper.Create(AGraphic: TGraphic);
begin
inherited Create;
FStream := TMemoryStream.Create;
AGraphic.SaveToStream(FStream);
Fimage:= TGPImage.Create(TStreamAdapter.Create(FStream));
end;
constructor TGPImageWrapper.Create(FileName: String);
begin
inherited Create;
Fimage:= TGPImage.Create(FileName);
end;
destructor TGPImageWrapper.Destroy;
begin
FImage.Free;
FStream.Free;
inherited;
end;
>> GPImagelisten aus Imagelisten (üblicherweise mit PNG's 32-bit) gefüllt.
Delphi-Quellcode:
procedure CreateGPList(
il:TDragImageList;
var ol:TObjectList<TGPImageWrapper>);
var
i:Integer;
ico:TIcon;
begin
ol := TObjectList<TGPImageWrapper>.Create;
ol.OwnsObjects := true;
for I := 0
to il.Count - 1
do
begin
ico:=TIcon.Create;
try
IL.GetIcon(i,ico);
ol.Add(TGPImageWrapper.Create(ico));
finally
ico.Free;
end;
end;
end;