Боже мой, Эмбаркадеро допустил ошибку.
Несколько моих тестов показали, что если флажок изначально снят, но проверен пользователем, то будет установлен флаг tfVerificationFlagChecked
. Но если флаг установлен изначально, и пользователь снимает флажок, то tfVerificationFlagChecked
не будет удален из набора Flags
. И это не странно. Код VCL
Result := TaskDialogIndirect(LTaskDialog, {$IFNDEF CLR}@{$ENDIF}LModalResult,
{$IFNDEF CLR}@{$ENDIF}LRadioButton, {$IFNDEF CLR}@{$ENDIF}LVerificationChecked) = S_OK;
FModalResult := LModalResult;
if Result then
begin
FButton := TTaskDialogButtonItem(FButtons.FindButton(FModalResult));
FRadioButton := TTaskDialogRadioButtonItem(FRadioButtons.FindButton(LRadioButton));
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked);
end;
Обратите внимание, что флаг включен, если флажок установлен, когда диалоговое окно закрывается, но нет кода для удаления флага, если флажок снят пользователем.
Конечно, можно ожидать, что последняя часть кода прочитала
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked)
Я думаю, что я пойду с OnVerificationClicked
подходом ручного переключения.