Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Fehler TTaskDialog tfVerificationFlagChecked (https://www.delphipraxis.net/216689-fehler-ttaskdialog-tfverificationflagchecked.html)

dataspider 13. Feb 2025 09:02

Fehler TTaskDialog tfVerificationFlagChecked
 
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.:shock:

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

dataspider 13. Feb 2025 09:22

AW: Fehler TTaskDialog tfVerificationFlagChecked
 
Sorry, gestern war ich wohl blind:oops:

Ich hatte noch eine TaskDialog - Komponente auf dem Formular.
Ich hätte nur anstatt TaskDialog.Execute LTaskDialog.Execute schreiben müssen.

Tut mir leid, hat sich erledigt...

Frank

charliebrown33 25. Feb 2025 08:03

AW: Fehler TTaskDialog tfVerificationFlagChecked
 
Es scheint, dass das Flag nur innerhalb des OnVerificationClicked-Events gesetzt wird – hast du geprüft, ob das Event korrekt zugewiesen ist und nicht überschrieben wird?
basketball stars


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz