列表框字符串的OnClick事件

时间:2013-03-18 21:05:34

标签: delphi

我想将ListBox中的字符串转换为事件。就像我有一个字母表“Image5”,我想在我的程序中获取Image5.Click事件。有可能吗?

1 个答案:

答案 0 :(得分:4)

如果我正确理解你的问题,如果列表框中的所有组件都是相同的类型(例如ListBox,那么这样的事情应该有用(它是TImage的双击处理程序) }):

procedure TForm1.ListBox1DblClick(Sender: TObject);
var
  Image: TImage;
  Selected: string;
begin
  if ListBox1.ItemIndex = -1 then
    Exit;
  Selected := ListBox1.Items[ListBox1.ItemIndex];
  Image := FindComponent(Selected) as TImage;
  if Assigned(Image) then
    if Assigned(Image.OnClick) then
      // You can access Image.OnClick here. In this case, I'll
      // just call it directly with a nil Sender parameter.
      Image.OnClick(nil);
end;

如果你想做的只是打电话给Image.OnClick,你可以更直接地做到(正如大卫在他对我的回答的评论中提到的那样):

if Assigned(Image) then
  Image.Click;    // Automatically calls OnClick if assigned