在delphi中获取鼠标下的categorybuttons项标题

在delphi中获取鼠标下的categorybuttons项标题,delphi,mouse,categories,Delphi,Mouse,Categories,当鼠标进入某个项目或类别时,如何获取它们的标题? 在项目或类别上单击鼠标右键时,如何获取它们的当前标题? 我给categorybuttons分配了一个弹出菜单。现在我需要获取当前项目或类别标题,并将它们保存在变量中。因为我的弹出菜单有一个项目,点击它就会打开一个新的表单,所以我想在这里使用这个变量值 类似的内容在单击事件中起作用: Current_Items, Current_Category: String procedure TForm1.CategoryButtons1Click(Sen

当鼠标进入某个项目或类别时,如何获取它们的标题? 在项目或类别上单击鼠标右键时,如何获取它们的当前标题? 我给categorybuttons分配了一个弹出菜单。现在我需要获取当前项目或类别标题,并将它们保存在变量中。因为我的弹出菜单有一个项目,点击它就会打开一个新的表单,所以我想在这里使用这个变量值

类似的内容在单击事件中起作用:

Current_Items, Current_Category: String

procedure TForm1.CategoryButtons1Click(Sender: TObject);
begin
  Current_Items := CategoryButtons1.CurrentCategory.Items
    [CategoryButtons1.SelectedItem.Index].Caption;
  Current_Category := CategoryButtons1.CurrentCategory.Caption;
end;
但我需要在右键单击时获取它们。 有人能帮我做这个吗? 谢谢……

编辑:

使用OnHotButton事件准备
当前项目
变量。这将为您提供单击鼠标右键的项目,而不是类别

但是请注意,这并没有选择(激活)该特定按钮

var
  Current_Items, Current_Category: String;

procedure TForm17.CategoryButtons1HotButton(Sender: TObject;
  const Button: TButtonItem);
begin
  if Button <> nil then
    Current_Items := Button.Caption;
end;
var
当前_项,当前_类别:字符串;
程序TForm17.CategoryButtons1HotButton(发送方:ToObject;
常量按钮:TButtonItem);
开始
如果按钮为零,则
当前_项:=按钮。标题;
结束;
然后,在弹出菜单时,使用当前项来识别哪个按钮是热的。

编辑:

使用OnHotButton事件准备
当前项目
变量。这将为您提供单击鼠标右键的项目,而不是类别

但是请注意,这并没有选择(激活)该特定按钮

var
  Current_Items, Current_Category: String;

procedure TForm17.CategoryButtons1HotButton(Sender: TObject;
  const Button: TButtonItem);
begin
  if Button <> nil then
    Current_Items := Button.Caption;
end;
var
当前_项,当前_类别:字符串;
程序TForm17.CategoryButtons1HotButton(发送方:ToObject;
常量按钮:TButtonItem);
开始
如果按钮为零,则
当前_项:=按钮。标题;
结束;

然后在弹出菜单时,使用
当前项目
确定哪个按钮是热的。

谢谢您的回复。但我以前测试过这种方法,它无法检索到我想要的东西,因为当我们使用鼠标按下事件时,鼠标指针下的项目不会被选中。这不同于鼠标下的项目被选中的点击事件…是的@M你是对的,你可以说你已经试过了,在你的q。我会试着想点别的。谢谢你的回复。但我以前测试过这种方法,它无法检索到我想要的东西,因为当我们使用鼠标按下事件时,鼠标指针下的项目不会被选中。这不同于鼠标下的项目被选中的点击事件…是的@M你是对的,你可以说你已经试过了,在你的q。我试着想想别的。要让触发弹出菜单的组件弹出,您可以通过弹出菜单的
PopupComponent
属性获得。您仍然可以将这些信息作为参数传递给另一个表单。我的意思是,在弹出菜单项action event中,您可以打开表单,将按钮信息传递给表单,同时通过
PopupComponent
@Victoria获取当前操作源。我认为您的建议不起作用,因为类别和按钮在弹出级别上无法单独识别。
popupcomponent
将是整个
类别按钮1
@Tom,我不确定(无法测试),但您应该让触发弹出菜单的组件以这种方式弹出(无论容器如何安排)。当然,必须启用此类按钮,否则需要检查光标下的控件。顺便说一句,我不喜欢存储那样的变量。我会以这种形式创建一个方法,并将其作为参数传递。@Victoria我重复一遍:触发弹出窗口的组件是
CategoryButtons1
组件。类别或单个按钮没有已发布的属性,可以附加弹出窗口。@Tom,好的,我明白了,你说得对。
TCategoryButtons
组件是一个特殊容器,没有真正的子组件。要获取触发弹出菜单弹出的组件,可以通过弹出菜单的
PopupComponent
属性获取。您仍然可以将这些信息作为参数传递给另一个表单。我的意思是,在弹出菜单项action event中,您可以打开表单,将按钮信息传递给表单,同时通过
PopupComponent
@Victoria获取当前操作源。我认为您的建议不起作用,因为类别和按钮在弹出级别上无法单独识别。
popupcomponent
将是整个
类别按钮1
@Tom,我不确定(无法测试),但您应该让触发弹出菜单的组件以这种方式弹出(无论容器如何安排)。当然,必须启用此类按钮,否则需要检查光标下的控件。顺便说一句,我不喜欢存储那样的变量。我会以这种形式创建一个方法,并将其作为参数传递。@Victoria我重复一遍:触发弹出窗口的组件是
CategoryButtons1
组件。类别或单个按钮没有已发布的属性,可以附加弹出窗口。@Tom,好的,我明白了,你说得对。
TCategoryButtons
组件是一个特殊的容器,没有真正的子组件。