![]() |
Fensterposition von LoadPictureDialog setzen?
Moin, Moin,
eine ärgerliche Angelegenheit: Es gelingt mir nicht, den SavePictureDialog bzw. LoadPictureDialog zu positionieren. Das ist besonders bei mehreren Monitoren nervig. Wenn in den Options ofOldStyleDialog gesetzt ist, funktioniert es - aber nicht mit dem "NewStyle". Weder MoveWindow() noch SetWindowPos() haben dann eine erkennbare Auswirkung auf die Fensterposition. Gibt es eine Lösung? Warum versagen die o.g. Ansätze? //edit: Mal als offene Frage markiert... |
Re: Fensterposition von LoadPictureDialog setzen?
Zitat:
Lösung: Eigen Ableitung definieren, Umstieg auf Delphi 2007 oder entsprechend der Anleitung von ![]()
Delphi-Quellcode:
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) or { Win2k }
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion >= 4) and (Win32MinorVersion >= 90)) then { WinME } lStructSize := SizeOf(TOpenFilename) else lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer); { subtract size of added fields } |
Re: Fensterposition von LoadPictureDialog setzen?
Hmmm, schaut nach etwas "Handarbeit" aus.
Mal schauen, wann ich dafür Zeit finde. Vielen Dank für die Anwort! |
Re: Fensterposition von LoadPictureDialog setzen?
Hallo, wenn ich MoveWindow() im OnShow Ereignis aufrufe, wird der Dialog positioniert.
Wie hast du es probiert? |
Re: Fensterposition von LoadPictureDialog setzen?
Suuuper, Bernhard, dein Hinweis hat mich auf die richtige Spur gebracht:
![]()
Delphi-Quellcode:
Also weniger Aufwand geht wohl nicht!? Der Trick ist das zusätzliche ABORT !! Damit wird verhindert, dass der Hook seine "schändliche" Arbeit verrichtet und gleich wieder zentriert. Da wär' ich selbst NIE drauf gekommen :shock:
procedure TfoMain.SaveOpenPictureDialog(Sender:TObject); // gemeinsames Event
begin // von Open + Save ! with TOpenDialog(Sender) do SetWindowPos(GetParent(Handle), 0,10,10,0,0, // neue Position = 10/10 SWP_NOZORDER or SWP_NOSIZE); Abort // !!!!!!!!!!!!!!!!!!!!! end; // edit: Seh' gerade den roten Kasten von toms: Hab's bisher wie vorstehend versucht, aber ohne das ABORT - und dann geht es bei mir nicht?! // edit: Seh' gerade, die with-Anweisung ist eigentlich Blödsinn - bitte wegdenken und direkt einsetzen :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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