Ich hätte jetzt echt den TaskDialog von Delphi mit einen Checkbox gebraucht,
habe aber festgestellt, dass dieser in Delphi 11.2 nicht funktioniert.
Delphi-Quellcode:
procedure TFrmMain.ErrorDialog(var AShowAgain: Boolean);
Var
LTaskDialog: TTaskDialog;
begin
LTaskDialog := TTaskDialog.Create(Application);
try
LTaskDialog.Caption := 'Caption: Proc...';
LTaskDialog.Text := 'Fehlertext';
LTaskDialog.VerificationText := 'Diesen Fehler nicht mehr anzeigen';
LTaskDialog.CommonButtons := [TTaskDialogCommonButton.tcbOk];
LTaskDialog.MainIcon := tdiInformation;
//LTaskDialog.Flags := [tfAllowDialogCancellation, tfVerificationFlagChecked]; // bringt nichts. Flags bleiben genau so, egal ob checked oder nicht
TaskDialog.Execute;
AShowAgain := (TTaskDialogFlag.tfVerificationFlagChecked in LTaskDialog.Flags); // Flag ist nicht gesetzt
finally
LTaskDialog.Free;
end;
end;
Nur leider wird das Flag einfach nicht gesetzt.
Auch eine Initialisierung mit Setzen des Flags vor dem Execute bringt nichts.
Einen Fehler habe ich in der
VCL ja gefunden:
Delphi-Quellcode:
procedure TCustomTaskDialog.DoOnVerificationClicked(Checked: Boolean);
begin
if Assigned(FOnVerificationClicked) then
begin
if Checked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked);
FOnVerificationClicked(Self);
end;
end;
Müsste eigentlich so sein:
Delphi-Quellcode:
procedure TCustomTaskDialog.DoOnVerificationClicked(Checked: Boolean);
begin
if Checked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked);
if Assigned(FOnVerificationClicked) then
FOnVerificationClicked(Self);
end;
Das Flag wird nur gesetzt, wenn ich dem Ereignis OnVerificationClicked eine Methode zuweise.
Dachte ich, habe ich also gemacht und im Debugger sehe ich auch, dass Include(FFlags, tfVerificationFlagChecked) ausgeführt wird.
Trotzdem ist das Flag nach dem Execute wieder weg.
Da ich noch 11.2 nutze die Frage in die Runde:
Ist das evtl. in 11.3 schon behoben? Dann würde ich evtl. ein Update versuchen.
Danke
Frank