2013-06-10 2 views
0

У меня есть TToolButton на TJvToolBar, который связан с действием, которое открывает последовательный порт. У меня есть этот код в OnExecute() случае моего действия пользователя:TToolButton поведение при проверке

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 изменения свойств в ToolButton перед входом этого события , Это приводит к кнопке Up, даже если пользователь выбирает в ответ на приглашение. Почему ToolButton ведет себя так?

+0

В каком стиле находится кнопка 'tbsButton' или' tbsCheck'? –

+0

@DavidHeffernan tbsButton –

+1

Думаю, вам повезет с 'tbsCheck'. –

ответ

3

У вас есть кнопка инструмента, которая используется для указания булевского состояния. Такие кнопки должны использовать стиль кнопки tbsChecked. Когда кнопка использует этот стиль, нажатие кнопки переключает ее свойство Down.

Вы используете стиль кнопки tbsButton. Это стандартная кнопка, которая не предназначена для указания состояния. Когда у вас есть tbsButton, Down Недвижимость всегда False во время и после события OnClick.

В дополнение к настройке стиль tbsChecked вы можете установить Grouped свойство True (сохраняя AllowAllUp как False). Это предотвратит автоматическую переключение вашей кнопки на Down. Затем вы сможете переключать состояние своей кнопки так, как вы использовали.

Смежные вопросы