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ご覧のとおり、ユーザーがポートから切断したい場合はメッセージ ボックスの後にアクションを変更しますが、Downこのイベントに入る前にツールボタンのプロパティが変更されます。これにより、ユーザーがプロンプトに対して [いいえUp] を選択した場合でも、ボタンが表示されます。ToolButton がこのように動作するのはなぜですか?

4

1 に答える 1

3

ブール値の状態を示すために使用されるツール ボタンがあります。tbsCheckedこのようなボタンでは、ツール ボタン スタイルを使用する必要があります。ボタンがそのスタイルを使用している場合、ボタンをクリックするとそのDownプロパティが切り替わります。

tbsButtonボタンスタイルを使用しています。これは、状態を示すことを意図していない標準のプッシュ ボタン用です。をお持ちのtbsButton場合、Downプロパティは常にイベントFalse中およびOnClickイベント後にあります。

スタイルを に設定するだけでなく、プロパティを にtbsChecked設定することもできます (そのままにしておきます)。これにより、ボタンの自動状態切り替えが防止されます。その後、使用した方法でボタンの状態を切り替えることができます。GroupedTrueAllowAllUpFalseDown

于 2013-06-10T10:24:49.953 に答える