Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TTaskiDialog: Breite manuell setzten möglich? (https://www.delphipraxis.net/171865-ttaskidialog-breite-manuell-setzten-moeglich.html)

romber 29. Nov 2012 12:03

TTaskiDialog: Breite manuell setzten möglich?
 
Hallo!

Ich benutze in meinem Projekt TTaskDialog. Manche Dialogs, vor allem die mit etwas längerem Textinhalt, ziehen sich in die Höhe bis zum geht nicht mehr, die Breite bleibt aber gleich. Sieht gar nicht schön aus. Auch die Dateipfade, die ich dem Kunden gerne vollständig angezeigt bekommen möchte, werden zum Teil durch Punkte [\...\] ersetzt.

Gibt es die Möglichkeit, die TTaskDialogs breiter zu machen bzw. die Breite manuell setzten?
Wie teile ich dem TTaskDialog mit, dass ich die Dateipfade vollständig anzeigen möchte?

Viele Dank!

uligerhardt 29. Nov 2012 12:22

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Also, die entsprechende API-Struktur MSDN-Library durchsuchenTASKDIALOGCONFIG enthält ein Feld
Delphi-Quellcode:
cxWidth
:
Zitat:

The width of the task dialog's client area, in dialog units. If 0, the task dialog manager will calculate the ideal width.
Du kannst ja mal schauen, ob das im VCL-Quelltext verwendet wird.

romber 29. Nov 2012 12:38

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Vielen Dank! Probiere ich aus.

romber 29. Nov 2012 13:10

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Zitat:

Zitat von uligerhardt (Beitrag 1193559)
Du kannst ja mal schauen, ob das im VCL-Quelltext verwendet wird.

Wird zwar verwendet in der Unit CommCtrl.pas. TCustomTaskDialog im Unit Dialogs.pas verwendet eine Variable LTaskDialog vom Typ TTaskDialogConfig (TASKDIALOGCONFIG). Der kann ich cxWidth zuweisen, ändert sich an dem Dialog aber nichts.

uligerhardt 29. Nov 2012 13:19

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Zitat:

Zitat von romber (Beitrag 1193574)
Wird zwar verwendet in der Unit CommCtrl.pas. TCustomTaskDialog im Unit Dialogs.pas verwendet eine Variable LTaskDialog vom Typ TTaskDialogConfig (TASKDIALOGCONFIG). Der kann ich cxWidth zuweisen, ändert sich an dem Dialog aber nichts.

Du hast also die Original-Dialogs.pas geändert, oder?

romber 29. Nov 2012 13:23

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Zitat:

Zitat von uligerhardt (Beitrag 1193576)
Du hast also die Original-Dialogs.pas geändert, oder?

Ja, testweise. Ich hatte vor, eine andere alternative Execute-Funktion zu erstellen, falls es mit der cxWidth klappen sollte.

uligerhardt 29. Nov 2012 13:37

AW: TTaskiDialog: Breite manuell setzten möglich?
 
Zitat:

Zitat von romber (Beitrag 1193577)
Zitat:

Zitat von uligerhardt (Beitrag 1193576)
Du hast also die Original-Dialogs.pas geändert, oder?

Ja, testweise.

Ich frage nur, weil das manchmal etwas diffizil ist. :-) Vielleicht hast du keine Änderung gesehen, weil er noch die Original-Dialogs.dcu genommen hat oder so.

Zitat:

Zitat von romber (Beitrag 1193577)
Ich hatte vor, eine andere alternative Execute-Funktion zu erstellen, falls es mit der cxWidth klappen sollte.

Jetzt, wo du's erwähnst: Ich habe vor Zeiten mal in einem Testprojekt die Execute-Methode überschrieben:
Delphi-Quellcode:
  TMyCustomTaskDialog = class(TCustomTaskDialog)
  strict protected
    function DoExecute(ParentWnd: HWND): Boolean; override;
  end;

  TMyTaskDialog = class(TMyCustomTaskDialog)
  published
    property Buttons;
    property Caption;
    property CommonButtons;
    property CustomFooterIcon;
    property CustomMainIcon;
    property DefaultButton;
    property ExpandButtonCaption;
    property ExpandedText;
    property Flags;
    property FooterIcon;
    property FooterText;
    property HelpContext;
    property MainIcon;
    property ProgressBar;
    property RadioButtons;
    property Text;
    property Title;
    property VerificationText;
    property OnButtonClicked;
    property OnDialogConstructed;
    property OnDialogCreated;
    property OnDialogDestroyed;
    property OnExpanded;
    property OnHyperlinkClicked;
    property OnNavigated;
    property OnRadioButtonClicked;
    property OnTimer;
    property OnVerificationClicked;
  end platform;
TMyTaskDialog kannst du dann zwar nicht ohne weiteres im Formdesigner nutzen, aber für einen Test tut's das ja. Die Implementation von TMyCustomTaskDialog.Execute ist leider eine komplette Kopie, da TTaskDialog mal wieder ein Musterbesipiel an Wiederverwertbarkeit ist.:wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 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