AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ShowModal, arbeitet das Programm weiter?

ShowModal, arbeitet das Programm weiter?

Ein Thema von Pseudemys Nelsoni · begonnen am 27. Okt 2004 · letzter Beitrag vom 27. Okt 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:03
moin,

im Form1 habe ich im OnShow folgendes stehen:

Zitat:
Form2.ShowModal
wenn ich mein programm nun starte sehe ich Form2, Form1 aber nicht.... ist ja auch klar, weil mein Form1 erst angezeigt wird wenn form 2 geschlossen wird....

was ist aber nun wenn ich möchte das das ShowModal mein programm nicht am arbeiten hindern soll? ich möchte halt das das Form1 nicht benutzt werden kann solange form2 offen ist...aber trotzdem sollte alles andere weiterarbeiten...ist das so? und wenn nicht, wie kann ich das tun?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#2

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:13
Nein, bei Aufruf von Showmodal hält das aufrufende Formular an, bis das Modale Fenster geschlossen und ein Modalresult zurückgegeben wird.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:17
läuft das programm selbst aber weiter? z.b wenn ich nen serversocket habe....horcht der weiter und reagiert auch obwohl ein modales fenster offen is?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#4

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:20
selbstverständlich "läuft" das Programm selbst weiter, auch wenn ein modales Form angezeigt wird. Das bedeutet nur, daß alle "darunterliegenden" nicht-modalen Fenster nicht fokussiert werden können und damit keine Maus/Tastaturevents empfangen.

Z.B. ein Timer oder ServerSocket auf besagtem Form1 würde weiter laufen, ebenso wie z.B. eine Message von "außen" ankommen würde.

Roderich
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:27
moin,

dann frag mich mich, wieso wenn ich Form2 im Form1OnShow öffne, das Form1 selbst erst beim schliessen von Form2 angezeigt wird? irgendwie muss die message "WM_SHOW" ja gehalten worden sein...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 13:49
hallo

wenn du das 2. Formular im OnSchow vom ersten aufrufst wird das 2. Formular vorm Zeigen aufgerufen, deshalb wird das 1. Formular erst beim beenden des 2. Form angezeigt.

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 14:01
also hält das programm doch an?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 14:18
Hi,
es hält leidiglich die aktuelle Methode auf. Der Rest des Programms, der im Hintergrund läuft, läuft ganz normal weiter.

Chris
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 15:09
Zitat von Chakotay1308:
Hi,
es hält leidiglich die aktuelle Methode auf. Der Rest des Programms, der im Hintergrund läuft, läuft ganz normal weiter.
Moment. Trotz so schönen Sachen wie Funktionen und Sprünge wird ein (single-threaded) Programm immer noch sequenziell ausgeführt. Und ein Konstrukt wie
Form2.ShowModal; ist ein Funktionsaufruf. D.h. es wird in den entsprechenden Code verzweigt, dieser wird abgearbeitet und anschließend wird zurückgesprungen. Im Fall einer modalen Anzeige ist es aber so, dass die Funktion abgearbeitet wird solange das modale Fenster nicht geschlossen wird. Das heißt das Programm läuft nicht im Hintergrund weiter. Windows Messages werden zwar in der Nachrichtenwarteschlange abgelegt, aber vom Programm nicht verarbeitet.

Anders sieht es natürlich bei Anwendungen mit mehreren Threads aus.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#10

Re: ShowModal, arbeitet das Programm weiter?

  Alt 27. Okt 2004, 15:54
Ich hab das jetzt mal an 'nem simplen Beispiel getestet. Ein Form erstellt, ein Label und einen Timer draufplatziert.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  zeit := Zeit+1;
  Label1.caption := IntToStr(zeit);
end;
Dann im OnShow des Forms ein zweites Form mit ShowModal öffnen. Wenn man jetzt das Programm startet, einige Sekunden wartet und dann das Modale Form schließt, sieht man, dass das Mainform bereits einige Sekundenlang gearbeitet hat, also läuft das Mainform im Hintergrund weiter. Oder ist es irgendwie anders gemeint und ich hab was falsch verstanden?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf