Delphi TToolButton(tbsDropDown)-down属性工作不正常

Delphi TToolButton(tbsDropDown)-down属性工作不正常,delphi,delphi-xe4,Delphi,Delphi Xe4,我对Delphi XE4中的TToolButton有一些问题 procedure TForm2.FormCreate(Sender: TObject); begin btn1.Style := tbsDropDown; btn1.DropDownMenu := pmCreateReport1; btn1.PopupMenu := pmCreateReport1; FDown := True; btn1.down := FDown; end; p

我对Delphi XE4中的TToolButton有一些问题

procedure TForm2.FormCreate(Sender: TObject);
begin
  btn1.Style        := tbsDropDown;
  btn1.DropDownMenu := pmCreateReport1;
  btn1.PopupMenu    := pmCreateReport1;

  FDown     := True;
  btn1.down := FDown;
end;

procedure TForm2.btn1Click(Sender: TObject);
begin
  FDown     := not FDown;
  btn1.down := FDown;
end;
FormCreate之后,down属性设置为true并且可以工作,但是当我单击按钮时,down属性没有按预期工作。第二次点击按钮后,按钮应再次按下

调试器说属性设置为true,这是正确的,但我在表单上看不到它

当我使用一个没有样式TBSDR的简单TToolButton时,它会按预期工作

你有什么想法吗?

解释道:

只有当
Style
tbsCheck
时,工具按钮才能保持关闭状态


您必须找到其他方法来实现所需的表示。

使用
ActionList
,将自动检查属性设置为True

示例代码:

const
  wm_tlbtnShowClosedClicked = WM_USER + 100;

TForm2 = class(TForm)
.....
private
procedure tlbtnShowClosedClicked(var Msg :TMessage); message wm_tlbtnShowClosedClicked;
end

procedure TForm2.tlbtnShowClosedClicked(var Msg: TMessage);
begin
  btn1.Down := (btn1.Action as TAction).Checked;
end;