AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Weitere Fenster geöffnet?

Ein Thema von trashcandesign · begonnen am 17. Dez 2007 · letzter Beitrag vom 17. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#1

Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 10:33
Moin,

ich habe ein Programm, dass mehrere Unterfenster öffnen kann.
Diese unterfenster sind leider nicht vom gleichen Typ, dh. ich habe TForm1, TForm2, TForm3 ... usw.

Jetzt möchte ich bevor das Programm geschlossen wird überprüfen, ob noch eins dieser Unterfenster geöffnet ist und dementsprechend eine Meldung ausgeben. Frage ist nur wie?

Ich hab mir mal eine Array gebastelt, in das ich die WindowHandles schreibe, finde aber keine möglichkeit zu überprüfen, ob das zu dem Handle gehörende Fenster noch offen ist!?
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 10:37
lass die Fenster beim oeffnen in ein Projektwetes Array (boolsch) reinschreiben wenn sie sich oeffnen und wenn sie geschlossen werden.
beim beenden kontrollieren ob das ganze array nur falses enthaelt
vlees91
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 10:40
sowas in der richtung hatte ich mal drin, hat aber ab und an mal nicht richtig funktioniert.
Irgendwie haben es unsere kunden immerwieder geschafft, die fenster zu shcließen, ohne dass dieser Boolean wert false angenommen hat.
Sodass dann zwar kein fenster mehr offen war, aber mein Programm immer noch "dachte" es wäre so.

Deswegen wollte ich halt aktiv überprüfen, ob die Fenster noch aktiv sind.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 10:44
Kann man nicht Show auf wahr prüfen? Und man müsste auch über TApplication über die vorhandenen Formulare iterieren können.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 10:55
Show kann man auf wahr prüfen, indem man schaut, ob es visible ist, aber dazu müsste ich ja irgendwie vom Handle auf die Form kommen.

Bei TApplicaiton hab ich leider nichts gefunden, mit dem man durch die Formulare iterieren könnte.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 11:11
Zitat von trashcandesign:
Show kann man auf wahr prüfen, indem man schaut, ob es visible ist, aber dazu müsste ich ja irgendwie vom Handle auf die Form kommen.

Bei TApplicaiton hab ich leider nichts gefunden, mit dem man durch die Formulare iterieren könnte.
Falsch du brauchst nicht das Handle, sondern die Objektinstanz, um die Eigenschaft Visisble abzufragen. Und der application sollten alle vorhandenen Formulare bekannt sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#7

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 11:16
wie wäre es, wenn du einfach mal Form1.Visible, Form2.Visible, ... ausließt?

und warum speicherst du ie Handles der Forms?
(eine Refferenz auf die Forms macht sich doch auch gut )


Delphi-Quellcode:
For i := 0 to Application.ComponentCount - 1 do
  If Application.Components[i].ClassName = 'TFormThen
    ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 11:18
Also ich habe eigene Prozeduren dafür in meiner Hauptform.

RegisterClient(aForm:TForm) und UnregisterClient(aForm: TForm)
Diese fügen das Form in eine TList ein bzw. entfernen sie wieder.
im FormCreate bzw. FormClose der UnterFormulare rufe ich diese Prozeduren auf.

Beim Schliessen der Hauptform prüfe ich, ob in der Liste noch ein Eintrag drin ist und reagiere entsprechend.
if fFensterListe.Count <> 0 then
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 11:23
Hi,

noch eine Variante:
Delphi-Quellcode:
var
  i: integer;
begin
  for i:= 0 to Application.ComponentCount- 1 do
    if Application.Components[i] is TCustomForm then
      if TCustomForm(Application.Components[i]).Showing then
        showmessage(TCustomForm(Application.Components[i]).Name)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Weitere Fenster geöffnet?

  Alt 17. Dez 2007, 11:46
Hallo,

ihr sucht an der falschen Stelle., Delphi-Referenz durchsuchenTScreen bietet einen Zugriff auf alle Formulare der Applikation.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:28 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