Я предполагаю, что вы используете D2009, поскольку вы можете загрузить файл PNG в Image1.
Если вы не хотите распространять свои изображения вместе с вашим приложением (как предполагает решение skamradt), вы должны включить их в качестве ресурсов:
Добавьте png в ваш проект: используйте меню " Project | Resources ... " и добавьте файлы.
Назовите их соответственно, чтобы получить что-то вроде:
1active.png RCData PngImage_Active
1inactive.png RCData PngImage_Inactive
В вашем событии Click вам понадобится индикатор состояния, чтобы знать, какой из них отображать (например, skamradt).
Я использовал Image1.hint, чтобы сказать, какое изображение загружено (быстро и грязно, для демонстрации).
Используйте процедуру LoadImgFromPngResource ниже, чтобы загрузить соответствующее изображение PNG:
procedure LoadImgFromPngResource(const AResName: string; DestImage: TImage);
var
png: TPngImage;
begin
png := TPngImage.Create;
try
png.LoadFromResourceName(HInstance, AResName);
DestImage.Picture.Assign(png);
finally
png.Free;
end;
end;
procedure TForm4.Image1Click(Sender: TObject);
begin
if Image1.Hint <> 'Active' then
begin
LoadImgFromPngResource('PngImage_Active', Image1);
Image1.Hint := 'Active';
end
else
begin
LoadImgFromPngResource('PngImage_Inactive', Image1);
Image1.Hint := 'Inactive';
end;
end;