なんてことだ、エンバカデロは間違いを犯した。
私のいくつかのテストでは、チェックボックスが最初はオフになっているが、ユーザーがチェックした場合、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
手動で切り替えるアプローチを採用すると思います。