delphi – 有没有办法找出TButtonGroup的哪个按钮被点击?

delphi – 有没有办法找出TButtonGroup的哪个按钮被点击?,第1张

概述我的应用程序使用TButtonGroup控件.我为每个按钮分配一个事件处理程序:doClick.通过为每个按钮(指针(i))分配信息,我可以确定调用了哪个按钮.这是代码: procedure TVector_Menu.Synchronize (rows, cols: Int32);var btn: TGrpButtonItem; i: Int32;begin ButtonGro 我的应用程序使用TbuttonGroup控件.我为每个按钮分配一个事件处理程序:doClick.通过为每个按钮(指针(i))分配信息,我可以确定调用了哪个按钮.这是代码:

procedure TVector_Menu.Synchronize (rows,cols: Int32);var btn: TGrpbuttonItem;     i: Int32;begin   buttonGroup.Items.Clear;   Self.Rows := rows;   Self.Cols := cols;   for i := 0 to rows * cols - 1 do   begin      btn := buttongroup.Items.Add;      btn.Data       := Pointer (i);      btn.ImageIndex := i;      btn.OnClick    := doClick;   end; // for   Self.ClIEntHeight :=  4 + rows * buttonGroup.buttonHeight;   Self.ClIEntWIDth  := 22 + cols * buttonGroup.buttonWIDth;end; // Synchronize //procedure TVector_Menu.doClick (Sender: TObject);var btn: TGrpbuttonItem;     i,r,c: Int32;begin   btn := (Sender as TGrpbuttonItem); // @@@ TbuttonGroup   i := Int32 (btn.Data);   get_rc (i,c);   if Assigned (FOnClick)      then FOnClick (Sender,@Fbutton_Matrix [r,c]);end; // doClick //

当调用doClick时,我在标有“@@@”的行上获得了一个无效的类型转换.当我使用TbuttonGroup作为btn以及类型转换时,类型转换是正确的,但是这个不包含数据属性,并且无论如何都不会有太多用处.

作为测试,我为TbuttonGroup控件分配了一个OnClick事件处理程序,我注意到当我单击一个按钮时,首先调用按钮事件处理程序,然后调用包含按钮事件处理程序的TbuttonGroup.

问题:有没有办法找出TbuttonGroup的哪个按钮被点击了?

在windows 7/64上使用Delphi XE

解决方法 您得到一个无效的类型转换异常,因为Sender实际上是TbuttonGroup而不是TGrpbuttonItem.这意味着如果要使用TGrpbuttonItem.OnClick,则需要为每个按钮使用不同的事件处理程序.

在您的情况下,您应该使用提供按钮索引的TButtonGroup.OnButtonClicked事件.

但是,这里有一个潜在的缺陷,你需要确保避免. documentation指出:

Occurs when a button is clicked,if the OnClick event is not present.

换句话说,只有在没有为按钮组或按钮项分配OnClick事件处理程序时,才会触发OnbuttonClicked事件.

总结

以上是内存溢出为你收集整理的delphi – 有没有办法找出TButtonGroup的哪个按钮被点击?全部内容,希望文章能够帮你解决delphi – 有没有办法找出TButtonGroup的哪个按钮被点击?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1253673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存