delphi - Delphi通过编码点击图片
问题描述
我正在做一个项目,如果您按下图像,图像会通过编码导致按下另一个按钮。
我试过了Image.click;
,Image.OnClick := Imageclick;
procedure TForm1.RandomRekenaar;
var
z: integer;
begin
z := 0;
if (rgpSpelTipe.ItemIndex = 0) and (rgpSpelers.ItemIndex = 2) then
begin
z := Random(16 - 1 + 1);
case z of
1:
if Prent41.Visible <> False
then Prent41.OnClick := Prent41Click
else RandomRekenaar;
2:
begin
if Prent42.Visible <> False then
begin
Prent42.Click;
end
else
begin
RandomRekenaar;
end;
end;
3:
begin
if Prent43.Visible <> False then
begin
Prent43.Click;
end
else
begin
RandomRekenaar;
end;
end;
4:
begin
if Prent44.Visible <> False then
begin
Prent44.Click;
end
else
begin
RandomRekenaar;
end;
end;
5:
begin
if Prent45.Visible <> False then
begin
Prent45.Click;
end
else
begin
RandomRekenaar;
end;
end;
6:
begin
if Prent46.Visible <> False then
begin
Prent46.Click;
end
else
begin
RandomRekenaar;
end;
end;
7:
begin
if Prent47.Visible <> False then
begin
Prent47.Click;
end
else
begin
RandomRekenaar;
end;
end;
8:
begin
if Prent48.Visible <> False then
begin
Prent48.Click;
end
else
begin
RandomRekenaar;
end;
end;
9:
begin
if Prent49.Visible <> False then
begin
Prent49.Click;
end
else
begin
RandomRekenaar;
end;
end;
10:
begin
if Prent410.Visible <> False then
begin
Prent410.Click;
end
else
begin
RandomRekenaar;
end;
end;
11:
begin
if Prent411.Visible <> False then
begin
Prent411.Click;
end
else
begin
RandomRekenaar;
end;
end;
12:
begin
if Prent412.Visible <> False then
begin
Prent412.Click;
end
else
begin
RandomRekenaar;
end;
end;
13:
begin
if Prent413.Visible <> False then
begin
Prent413.Click;
end
else
begin
RandomRekenaar;
end;
end;
14:
begin
if Prent414.Visible <> False then
begin
Prent414.Click;
end
else
begin
RandomRekenaar;
end;
end;
15:
begin
if Prent415.Visible <> False then
begin
Prent415.Click;
end
else
begin
RandomRekenaar;
end;
end;
16:
begin
if Prent416.Visible <> False then
begin
Prent416.Click;
end
else
begin
RandomRekenaar;
end;
end;
end;
end;
end;
解决方案
尝试更多类似的东西:
var
Images: array[0..15] of TImage;
procedure TForm1.FormCreate(Sender: TObject);
begin
Images[0] := Prent41;
Images[1] := Prent42;
...
Images[15] := Prent416;
{ or:
for I := 0 to 15 do
Images[I] := TImage(FindComponent('Prent4'+IntToStr(I+1)));
}
end;
function TForm1.RandomImage: TImage;
var
VisibleImages: array[0..15] of TImage;
I, Count: Integer;
begin
Result := nil;
Count := 0;
for I := 0 to 15 do
begin
if Images[I].Visible then
begin
VisibleImages[Count] := Images[I];
Inc(Count);
end;
end;
if Count > 0 then
Result := VisibleImages[Random(Count)];
end;
procedure TForm1.RandomRekenaar;
var
Image: TImage;
begin
if (rgpSpelTipe.ItemIndex = 0) and (rgpSpelers.ItemIndex = 2) then
begin
Image := RandomImage;
if Image <> nil then
Image.Click; // or Image.OnClick(Image);
end;
end;
推荐阅读
- ruby-on-rails - 如何在rails中使用carrierwave访问has_many_through文件的文件url
- javascript - Mongodb Aggregate - Grouping by hour for today
- mysql - 我如何从 mysql 查询这些数据?
- java - Java同一个变量在不同的地方有不同的值
- php - 如何检查Mysql中具有逗号分隔值的列中的值?
- c# - 如何使用 .Net 内存分析器报告检查应用程序中是否存在内存泄漏?
- javascript - 在我选择你自己的冒险程序时输入错误意外结束
- flutter - Flutter 如何将 filePath 从 content://media/external/images/media/5275 转换为 /storage/emulated/0/DCIM/Camera/IMG_00124.jpg
- python - 你如何在 Pygame 中清除精灵?
- python - 从本地机器将 Python 连接到 AWS EC2 上的 kafka