Bia*_*nca -3 delphi components timage
我将把这个程序分配到OnMouseEnter.我有一些TImage会改变它的图片OnMouseEnter.在事件处理程序上更容易制作它的每个过程.但我不想重复相同的代码.
var
i: Integer;
CoName: TComponent;
png: TPngImage;
s: string;
begin
s := '';
for i := 1 to 16 do
begin
CoName := Form1.Components[i];
if CoName is TImage then
begin
s := CoName.Name;
Break;
end;
end;
if Trim(s) <> '' then
begin
png := TPngImage.Create;
try
png.LoadFromResourceName(hInstance, 'ResImgA');
// s.picture.Assign(png); > i can not do this
finally
FreeAndNil(png);
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我怎么能s进入TImage.Name?
将OnMouseEnter所有TImage对象的事件设置为指向同一事件处理程序,并使用其Sender参数来标识TImage调用处理程序的对象:
procedure TForm38.ImageMouseEnter(Sender: TObject);
var
ResName: string;
im: TImage;
png: TPngImage;
begin
im := Sender as TImage;
// if your image resources are named as 'Res' + name of TImage (eg. 'ImgA')
// you can combine these as
ResName := 'Res' + im.Name;
png := TPngImage.Create;
try
png.LoadFromResourceName(hInstance, ResName);
im.picture.Assign(png);
finally
png.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)