0

我有一个TToolButton链接TJvToolBar到一个打开串行端口的操作。我在我的动作OnExecute()事件中有这个代码:

procedure TfrmMainForm.acInstrumentConnectedExecute(Sender: TObject);
begin
  if acInstrumentConnected.Checked then
    if MessageDlg('Are you sure you wish to disconnect?', mtWarning, [mbYes, mbNo], 0,
      mbNo) <> mrYes then
      exit;
  acInstrumentConnected.Checked := not acInstrumentConnected.Checked;
  // actual code to connect/disconnect follows...
end;

Checked如您所见,如果用户希望断开与端口的连接,我会在消息框之后更改我的操作,但 ToolButton 的Down属性会在输入此事件之前发生更改。Up即使用户响应提示选择“否”,这也会导致一个按钮。为什么 ToolButton 会这样?

4

1 回答 1

3

您有一个用于指示布尔状态的工具按钮。此类按钮应使用tbsChecked工具按钮样式。当按钮使用该样式时,单击按钮会切换其Down属性。

您正在使用tbsButton按钮样式。这是用于不用于指示状态的标准按钮。当您拥有 时tbsButton,该Down属性始终在事件False期间和之后OnClick

除了将样式设置为之外,tbsChecked您还可以将Grouped属性设置为True (保持AllowAllUpFalse)。这将阻止您的按钮自动Down切换状态。然后,您将能够以您使用的方式切换按钮的状态。

于 2013-06-10T10:24:49.953 回答