O Dios mío, Embarcadero ha cometido un error.
Algunas pruebas mías mostraron que si la casilla de verificación inicialmente está desmarcada, pero es verificada por el usuario, se establecerá la bandera tfVerificationFlagChecked
. Pero si la bandera se establece inicialmente, y el usuario desmarca la casilla, entonces tfVerificationFlagChecked
no se eliminará del conjunto Flags
. Y esto no es extraño El código VCL hace
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;
en cuenta que la bandera se incluye si está marcada la casilla de verificación cuando se cierra el diálogo, pero no hay un código para quitar la bandera si la casilla está desactivada por el usuario.
Por supuesto, uno esperaría que la última parte del código de haber leído
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked)
Creo que voy a ir con el enfoque de cambiar de manera manual OnVerificationClicked
.
La documentación oficial, por cierto, es horrible. Toma esto como ejemplo: http://docwiki.embarcadero.com/VCL/en/Dialogs.TCustomTaskDialog.URL Ni siquiera explican * what * URL esto es. No es evidente que haya una URL asociada a cada diálogo de tarea. Y aquí (http://docwiki.embarcadero.com/VCL/en/Dialogs.TCustomTaskDialog.Execute) se olvidan de explicar qué significa el resultado (booleano) de la función. –
Tiene el código fuente, ¿verdad? Busque dónde se usa la función API de diálogo. Debería llamar a TaskDialogIndirect. El cuarto parámetro es el que finalmente recibirá el valor de la casilla de verificación, entonces, ¿qué hace el código con él? –
@Rob Kennedy: Sí, la API de Windows está muy bien documentada, por lo que esta es (siempre) una buena idea. Estoy buscando ahora ... –