AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fensterposition von LoadPictureDialog setzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Fensterposition von LoadPictureDialog setzen?

Ein Thema von taaktaak · begonnen am 18. Jun 2008 · letzter Beitrag vom 18. Jun 2008
Antwort Antwort
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#1

Fensterposition von LoadPictureDialog setzen?

  Alt 18. Jun 2008, 15:03
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...
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Fensterposition von LoadPictureDialog setzen?

  Alt 18. Jun 2008, 15:20
Zitat von taaktaak:
Warum versagen die o.g. Ansätze?
Wenns das gleiche wie bei Open/Savedialog ist: Weil Borland per gesetzten Hook den Dialog zentriert darstellt (deshalb schaut er auch unter Vista XP-Altbacken aus).
Lösung: Eigen Ableitung definieren, Umstieg auf Delphi 2007 oder entsprechend der Anleitung von TMS selbst was bauen. Folgende Anpassung ist nötig damit es auch unter alten Windows-Versionen läuft:

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 }
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Fensterposition von LoadPictureDialog setzen?

  Alt 18. Jun 2008, 15:28
Hmmm, schaut nach etwas "Handarbeit" aus.
Mal schauen, wann ich dafür Zeit finde.
Vielen Dank für die Anwort!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Fensterposition von LoadPictureDialog setzen?

  Alt 18. Jun 2008, 16:12
Hallo, wenn ich MoveWindow() im OnShow Ereignis aufrufe, wird der Dialog positioniert.
Wie hast du es probiert?
Thomas
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#5

Re: Fensterposition von LoadPictureDialog setzen?

  Alt 18. Jun 2008, 16:19
Suuuper, Bernhard, dein Hinweis hat mich auf die richtige Spur gebracht:

Hier habe ich den richtigen Hinweis gefunden. Es ist so verblüffend einfach!

Delphi-Quellcode:
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;
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

// 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
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:36 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