-5

我想将 ListBox 中的字符串转换为事件。就像我有一个显示“Image5”的字符串一样,我想在我的过程中获取 Image5.Click 事件。是否可以?

4

1 回答 1

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
于 2013-03-18T21:55:57.047 回答