Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Geöffnete Forms auslesen/ermitteln? (https://www.delphipraxis.net/127210-geoeffnete-forms-auslesen-ermitteln.html)

MCXSC 9. Jan 2009 02:07


Geöffnete Forms auslesen/ermitteln?
 
Hallo,

eine kleine Frage bezüglich geöffneter Fenster eines Programmes.

Und zwar würde ich gerne folgende Dinge auslesen können (jeweils immer nur vom eigenen Programm):

-> Geöffnete Forms
-> Form, das ganz oben liegt

Ich weiß allerdings weder ob das überhaupt möglich ist, noch wie ich das bewerkstelligen sollte... :(

Danke,
MCXSC

Sunlight7 9. Jan 2009 04:07

Re: Geöffnete Forms auslesen/ermitteln?
 
zB mit:

Delphi-Quellcode:
   var i:Integer;
begin
   Memo1.Lines.Clear;

   For i:=0 to Screen.FormCount-1 do
      Memo1.Lines.Add(Screen.Forms[i].Caption{oder .Name});
Die 1. Form, die Du bekommst ist im Vordergrund (sofern Deine Anwendung den Fokus hat).

MCXSC 9. Jan 2009 19:33

Re: Geöffnete Forms auslesen/ermitteln?
 
Super, danke!

Gibt es auch noch die Möglichkeit zu testen, ob irgendein Dialog (Öffnen, Speichern, MessageDlg, ...) geöffnet ist?

Sunlight7 9. Jan 2009 20:09

Re: Geöffnete Forms auslesen/ermitteln?
 
Ob ein Dialogfeld geöffnet ist weißt Du ja, denn

Delphi-Quellcode:
ShowMessage('Vorm Dialog');
// hier wird gewartet, bis Du das Meldungsfenster weg klickst

// Dann kommt das OpenDialog
OpenDialog1.Ecxecute;
// und wartet wieder, bis Du es weg klickst

// Und nochma
ShowMessage('Nach dem Dialog');
// Du weißt bescheid ;)

MCXSC 9. Jan 2009 20:11

Re: Geöffnete Forms auslesen/ermitteln?
 
Ja, das weiß ich ja. ;)

Ich suche aber eher was nach dem Motto:

Delphi-Quellcode:
if IrgendeinDialogFenster then
:)

taaktaak 9. Jan 2009 20:13

Re: Geöffnete Forms auslesen/ermitteln?
 
Moin, Moin,
mit
Delphi-Quellcode:
with Application do
  for i:=0 to ComponentCount-1 do
    if Components[i] is TForm then begin
      // ..
      // prüfe, welches Form gefunden wurde
      // und nutze das Ergebnis
      for j:=0 to Components[i].ComponentCount-1 do
        if Components[i].Components[j] is ~~ then // < Typ der gesuchten Komponente einsetzen
          // ..
          // prüfe, welche Komponente gefunden wurde
          // und nutze das Ergebnis
      end;
werden alle Formulare und Komponenten deiner Anwendung "durchlaufen".
Vielleicht hilft es dir.

alzaimar 9. Jan 2009 20:25

Re: Geöffnete Forms auslesen/ermitteln?
 
Viele Dialoge sind Systemdialoge und nicht in der Komponenten- btw. Forms-Kollektion enthalten. Soweit ich mich erinnere, sind das Fenster mit dem Klassennamen '#32768'. Du könntest also schauen, ob ein Child-Fenster deiner Anwendung diesen Klassennamen besitzt. Dazu musst du die Kindfenster mit MSDN-Library durchsuchenEnumChildwindows durchlaufen.

MCXSC 9. Jan 2009 20:26

Re: Geöffnete Forms auslesen/ermitteln?
 
Hm, das greift aber nicht auf OpenXXXDialog/MessageDlg/etc. zu?

taaktaak 9. Jan 2009 20:31

Re: Geöffnete Forms auslesen/ermitteln?
 
alzaimar hat natürlich Recht, also einfach ausprobieren.
Aber selbst wenn es dir im Augenblick nicht hilft, in einem anderen Fall kannst du es bestimmt noch mal verwenden.

alzaimar 9. Jan 2009 21:23

Re: Geöffnete Forms auslesen/ermitteln?
 
Zitat:

Zitat von MCXSC
Hm, das greift aber nicht auf OpenXXXDialog/MessageDlg/etc. zu?

Zu früh gefreut... Neee.


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