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/)
-   -   Delphi Die Z-Ordnung innerhalb eines Programms feststellen (https://www.delphipraxis.net/122533-die-z-ordnung-innerhalb-eines-programms-feststellen.html)

Popov 17. Okt 2008 17:09


Die Z-Ordnung innerhalb eines Programms feststellen
 
Ich hab ein Programm das aus vielen Fenster besteht und sie alle sind während der Ausführung eingeblendet. Wird ein Fenster angetippt, kommt es in den Vordergrund. Soweit alles klar. Und weil die Reihenfolge nicht unwichtig ist, will ich sie beim Beenden des Programms speichern und später wiederherstellen.

Die Handles der Fenster habe ich, jetzt fehlt mir die Z-Ordnung. Ich weiß nur von der API Variante, allerdings würde ich gerne bei dem Programm auf die API-Funktionen verzichten. Kennt einer eine Methode wie man die Z-Ordnung intern ermitteln kann? Es geht hier nur um die Fenster der Applikation, nicht sonstiger Komponenten.

SimStar001 17. Okt 2008 17:28

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
und wenn du über FindWindowEx gehst, und mit dem obersten Fenster anfängst? Ich glaube dann solltest du die gewünschte Reiehnfolge auslesen können anhand der FensterHandles? :?:

toms 18. Okt 2008 08:08

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
Warum möchtest du nicht die API Variante nehmen? z.B GetWindow

SirThornberry 18. Okt 2008 08:30

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
Warum sollte er die Api-Variante welche nicht objektorienter ist in seinem VCL-Projekt was in aller Regel objectorientiert ist verwenden wenn es eventuell auch eine Lösung mit der VCL gibt?

Popov 18. Okt 2008 12:15

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
Zitat:

Zitat von toms
Warum möchtest du nicht die API Variante nehmen? z.B GetWindow

Die Fenster und deren Handles habe ich, nur fehlt mir die Reihenfolge. Ich dachte vielleicht gibt es intern einen Manager in dem man die Reihenfolge ermitteln kann.

Na gut, wenn es nicht anders geht, dann werde ich es über API machen müssen.


Dann frage ich mal bei der Gelegenheit: wie kann ich mit GetWindow die Fenster, und nur die Form-Fenster, meiner Anwendung auflisten? Bei

Delphi-Quellcode:
  h := GetWindow(Application.Handle, GW_HWNDFIRST);
  while h > 0 do
  begin
    h := GetWindow(h, GW_HWNDNEXT);
  end;
kommt ziemlich viel zurück. Und IsWindow filtert auch nicht viel.

Lannes 18. Okt 2008 16:53

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
Hallo,

eine Liste der Forms?:
Delphi-Quellcode:
var s : String;
    z : Integer;
begin
for z := 0 to Screen.FormCount -1 do
  begin
    s := s + Screen.Forms[z].Name+#13#10;
  end;
  showmessage(s);

Popov 18. Okt 2008 19:16

Re: Die Z-Ordnung innerhalb eines Programms feststellen
 
Lannes, du bist cool. Genau das habe ich gesucht. Ich dachte mir, daß es einen internen Manager geben muß. Screen.Forms liefert die Formulare mit der korrekten Z-Ordnung.


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