Luk*_*oud 0 delphi image click
我想通过单击 Image1组件将图片加载到Image1中 - 从一个名为1active.png的图片更改为第二个名为1inactive.png,反之亦然.
有什么办法吗?
我假设你正在使用D2009,因为你可以在Image1中加载一个png文件.
如果您不想将图像与应用程序一起分发(如skamradt的解决方案所示),则必须将它们作为资源包含在内:
将png添加到项目中:使用菜单" Project | Resources ... "并添加文件.
相应地命名它们得到类似的东西:
1active.png RCData PngImage_Active
1inactive.png RCData PngImage_Inactive
Run Code Online (Sandbox Code Playgroud)
在Click事件中,您需要一些状态指示器来知道要显示哪个(如skamradt).
我使用Image1.hint来判断加载了哪个图像(快速和脏,用于演示目的).
使用下面的LoadImgFromPngResource proc加载适当的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;
Run Code Online (Sandbox Code Playgroud)