Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.356 Beiträge
 
Delphi 11 Alexandria
 
#1

Fehler TTaskDialog tfVerificationFlagChecked

  Alt 13. Feb 2025, 10:02
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
Frank Reim
  Mit Zitat antworten Zitat