AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Caption in TTaskDialog

Ein Thema von Maekkelrajter · begonnen am 13. Dez 2022 · letzter Beitrag vom 22. Apr 2023
Antwort Antwort
Seite 1 von 2  1 2      
Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
157 Beiträge
 
Delphi 12 Athens
 
#1

Caption in TTaskDialog

  Alt 13. Dez 2022, 12:57
In einem TTaskdialog ist der Caption-String nur dann sichtbar, wenn mit den CommonButtons ein Cancel-Button deklariert wird. Dummerweise kann ich in diesem Dialog aber keinen Cancel - Button gebrauchen.
Delphi-Quellcode:
function InsertGUID(FN:string): Integer;
begin
  result:= mrNO;
  with TTaskDialog.Create(NIL) do
  try
    Caption:= 'GUIDs einfügen';
    MainIcon:= tdiShield;
    Title:= 'GUID in aktuelle Datei einfügen';
    Text:= 'Soll eine GUID generiert und in die Datei "' + FN + '" geschrieben werden?';
    commonButtons:= [tcbYes,tcbNo,tcbCancel]; // so funktioniert's
    //commonButtons:= [tcbYes,tcbNo]; // so funktioniert's nicht!
    flags:= [tfVerificationFlagChecked];
    verificationtext:= 'Für alle folgenden Tracks übernehmen';
    If Execute Then
    begin
      result:= modalresult;
      If tfVerificationFlagChecked in Flags Then result:= -result;
    end;
  finally
    Free;
  end;
end;
Ist das reguläres Verhalten oder mache ich etwas falsch?
Gruß LP
Miniaturansicht angehängter Grafiken
dialog_mit_cancelbutton.png   dialog_ohne_cancelbutton.png  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Caption in TTaskDialog

  Alt 13. Dez 2022, 13:31
Eigentlich nicht.

Vielleicht hängt es einfach von der Breite des Dialogs ab?
Text := 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...'

Oder nur Abbrechen, ohne Ja/Nein, also auch mit schmaleren Fenster.


Sieht die Titelleiste nur auf den Bildern dünner/flacher aus?

Könnte am Fensterstil liegen: mit Abbrechen gibt es ein [x] und damit wohl einen anderen Style.


VCL oder WinAPI?
Delphi-Quellcode:
  LatestCommonDialogs := False; // False = VCL emuliert diesen Dialog (mit einer TForm)
  with TTaskDialog.Create(NIL) do
$2B or not $2B

Geändert von himitsu (13. Dez 2022 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
157 Beiträge
 
Delphi 12 Athens
 
#3

AW: Caption in TTaskDialog

  Alt 13. Dez 2022, 14:58
Könnte am Fensterstil liegen: mit Abbrechen gibt es ein [x] und damit wohl einen anderen Style.
Delphi-Quellcode:
  
LatestCommonDialogs := False; // False = VCL emuliert diesen Dialog (mit einer TForm)
Es könnte tatsächlich am Fensterstil liegen. Wenn ich das Flag 'tfAllowDialogCancellation' setze, ist die Caption auch ohne CancelButton sichtbar, aber eben leider auch das [x], das ich nicht brauchen kann. Nur wenn ich unter Projekt/Optionen/Erscheinungsbild 'Windows' wähle, dann geht's auch ohne.

Und 'LatestCommonDialogs' müsste wohl 'UseLatestCommonDialogs' heißen.

Gruß LP

Geändert von Maekkelrajter (13. Dez 2022 um 15:09 Uhr)
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
145 Beiträge
 
Delphi 12 Athens
 
#4

AW: Caption in TTaskDialog

  Alt 15. Apr 2023, 21:33
Dieses Thema ist zwar schon alt, aber offensichtlich hat sich nichts geändert am Verhalten.
In Kombination mit Styles wird die Titelzeile nur angezeigt, wenn es einen "Abbruch-Button" gibt.
Hat hierzu jemand inzwischen eventuell was rausgefunden ?
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 00:06
Gibt es dafür einen Bug-Report? Ich könnte dann einen Kommentar mit der Ursache und einem Lösungsvorschlag dazu schreiben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
145 Beiträge
 
Delphi 12 Athens
 
#6

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 07:55
@Uwe Raabe:
Danke für deine Unterstützung.

Nein einen offiziellen Report gab es noch nicht, aber jetzt habe ich das mal gemacht.
Debuggers don’t remove bugs, they only show them in slow-motion.

Geändert von DaCoda (16. Apr 2023 um 09:14 Uhr)
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
145 Beiträge
 
Delphi 12 Athens
 
#7

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 09:10
Hier noch mal etwas vollständiger, damit man das besser Testen kann:
Code:
procedure TfrmMain.TestTaskDialog;
var
  TaskDialog: TTaskDialog;
begin
  TaskDialog := TTaskDialog.Create(Self);
  try
    TaskDialog.Title := 'Titletext';
    TaskDialog.Caption := 'Caption';
    TaskDialog.Flags := [tfPositionRelativeToWindow, tfSizeToContent];
    TaskDialog.CommonButtons := [tcbOk];
    TaskDialog.ModalResult := MB_OK;
    TaskDialog.Execute;
  finally  
    TaskDialog.Free;
  end;
end;
Das Ergebnis:
Ohne Style [Windows]: https://www.delphipraxis.net/attachm...1&d=1681628764
Mit Style: https://www.delphipraxis.net/attachm...1&d=1681628624
Miniaturansicht angehängter Grafiken
dialog_ohne_style.png   dialog_mit_style.png  
Debuggers don’t remove bugs, they only show them in slow-motion.

Geändert von DaCoda (16. Apr 2023 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 11:04
Das Problem liegt in TSysDialogStyleHook.PaintNC. Dort wird TextRect mit TRect.Empty initialisiert und im weiteren Verlauf Left und Right an die anzuzeigenden Buttons angepasst. Werden nun gar keine Buttons rechts angezeigt verbleibt TextRect.Right bei 0 und es erfolgt keine Textausgabe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
145 Beiträge
 
Delphi 12 Athens
 
#9

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 11:24
Vielen Dank Uwe,
dann kann ich da wohl nicht viel machen oder ?
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#10

AW: Caption in TTaskDialog

  Alt 16. Apr 2023, 11:42
Vielen Dank Uwe,
dann kann ich da wohl nicht viel machen oder ?
Das Problem ist eher, dass man als Entwickler schon verhältnismäßig viel machen muss um es zu beheben. Einfach TSysStyleHook ableiten und die PaintNC Methode überschreiben funktioniert leider nicht, da private Methoden verwendet werden (ein leider häufig anzutreffendes Ärgernis).

Du kannst eventuell die ganze Unit Vcl.SysStyles in dein Projektverzechnis (neben die DPR) kopieren und die vorgeschlagene Änderung implementieren. Bei einem Wechsel der Delphi-Version muss das aber mit der dann gültigen Unit wiederholt werden. Wie aufwändig das genau ist kann ich auch nicht sagen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz