Hallo,
Zitat von
Angel4585:
Wird da nicht gleichzeitig auch Image1.Picture.Graphic freigegeben?
Nein, intern wird beim Schreibzugriff auf die Eigenschaft
Graphic eine neue TGraphic-Instanz angelegt, der dann mittels
Assign() das übergebene Bild zugewiesen wird.
Zitat von
inherited:
IMHO ja, besser wäre da "Assign"
Das kann ins Auge gehen, da die Eigenschaft
Graphic durchaus den Wert NIL enthalten kann.
Zitat von
xaromz:
Das lässt sich natürlich nicht ohne eine Hilfsvariable erledigen.
Als
BDS-Nutzer könntest du das auch mit einer
helper class erledigen:
Delphi-Quellcode:
type
TObjectHelper = class helper for TObject
function Instance: TObject;
end;
function TObjectHelper.Instance;
begin
Result := Self;
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
// Icon aus Exe auslesen und Image zuweisen
with GetFileIcon('C:\Test.ico') do
try
Image1.Picture.Graphic := TIcon(Instance);
finally
Free;
end;
end;
Die helper class könnte man noch in eine Bibliotheks-
Unit auslagern und wiederverwenden. Die Lösung wirkt aber etwas unsauber und erreicht nicht die Eleganz des Chrome-Konstrukts. Letztlich spart sie nur etwas Schreibarbeit.
Gruß Hawkeye