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/)
-   -   SHBrowseForFolder falsche Größe (https://www.delphipraxis.net/182047-shbrowseforfolder-falsche-groesse.html)

gmc616 26. Sep 2014 09:01

SHBrowseForFolder falsche Größe
 
Hallo Delphianer,

ich versuche die Größe des SHBrowseForFolder zu anzupassen bzw. zu zentrieren und ermittle im BrowseCallbackProc -> BFFM_INITIALIZED mit Hilfe von GetWindowRect die aktuelle Größe des Dialogs.

Allerdings liefert mir GetWindowRect falsche Werte in Rect.Right und Rect.Bottom zurück.
Ich habe einen Screenshot gemacht und mit Hilfe von MS-Paint "ausgemessen". Right und Bottom sind falsch, Left und Top stimmen. :gruebel:

Right und Bottom brauche ich aber um die Breite und Höhe ermitteln zu kömmen, um letztendlich den Dialog ins Zentrum zu kriegen.
Das Ganze hat so lang korrekt funktioniert, so lang ich die (Standard-) Größe des Dialogs NICHT verändert habe.
Jetzt habe ich per Maus den Dialog größer gezogen (in dem winzigen Dialog wird man ja blöde, wenn sich durch Verzeichnisse klickt :zwinker:) und seit dem funktioniert das Zentrieren nicht mehr, weil GetWindowRect falsche Werte liefert.

Wieso? Wo könnte ich anfangen das Problem zu suchen?

D2009 unter Win2003

himitsu 26. Sep 2014 12:04

AW: SHBrowseForFolder falsche Größe
 
Vermutung: In BFFM_INITIALIZED wird der Dialog noch initialisiert und es steht noch nicht alles fest.

Wie im TForm, wo du im Create/OnCreate machen kannst was du willst, da die "automatische" Größe/Position erst im Show/ShowModal bestimmt wird.

gmc616 26. Sep 2014 13:21

AW: SHBrowseForFolder falsche Größe
 
Hmm .. die Vermutung könnte wohl richtig sein.

Allerdings interpretiere ich BFFM_INITIALIZED als bereits erledigt.
Auch das MSDN sagt: BFFM_INITIALIZED -> The dialog box has finished initializing.

Was allerdings nicht aussagt, dass deine Vermutung nicht doch korrekt ist :wink:

himitsu 26. Sep 2014 14:40

AW: SHBrowseForFolder falsche Größe
 
Nja, in Delphi ist die TForm nach dem Create auch initialisiert, aber beim Show wird halt noch die Ausrichtung vorgenommen.

Vielleicht bekommst du ja noch ein WM_SHOWWINDOW/WM_SIZE/WM_MOVE-Ereignis, oder irgendwie sowas, auf das du reagieren könntest?


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