AGB  ·  Datenschutz  ·  Impressum  







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

Zwei Forms Modal anzeigen

Ein Thema von Win32.API · begonnen am 10. Aug 2010 · letzter Beitrag vom 11. Aug 2010
Antwort Antwort
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#1

Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 15:42
Hallo,

ist es Möglich zwei Forms _gleichzeitig_ Modal anzuzeigen? Gibt es da einen "Hack" oder Ähnliches? Habe schon versucht eine andere Form per Enabled := true wiederzubeleben, leider ohne Erfolg.

Grüße,
Win32.API
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 15:45
Modal geht eigentlich nur Einmal. (also jeweils für die letzte Modal aufgerufene Form).

Ich weiß jetzt nicht wie Delphi die nichtmodalen Forms sperrt, aber eventuell kann man diese Forms auch selber sperren und würde/könnte dann seine Forms nichtmodal, aber dennoch fast wie modal, anzeigen.

bzw., was passiert, wenn du die erste Form modal (ShowModal) und danach die zweite Form nicht modal (nur via Show im OnGreate/OnShow der Ersten) anzeigst?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Aug 2010 um 15:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 17:45
Das geht schon, allerdings nur verschachtelt.

Man erstelle ein neues Form, platziere einen Button darauf und schreibe folgenden Code in den ButtonClick-Event:

Delphi-Quellcode:
procedure TForm.Button1Click(Sender: TObject);
var
  Form: TForm;
begin
  Form := TForm.Create(Application);
  try
    Form.ShowModal;
  finally
    Form.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 18:31
geht eben nicht, denn jeder Aufruf irgendeines .ShowModal sperrt alle Forms, welche zu diesem Zeitpunkt schon angezeigt werden.

Heißt also, daß du mit Form2 in deinem Button die Form1 auch mit sperren würdest.


Probier es einfach mal aus:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var
  f: TForm5;
begin
  f := TForm5.Create(self);
  f.Caption := 'ShowModal ' + TimeToStr(now);
  f.ShowModal;
  f.Free;
end;

procedure TForm5.Button2Click(Sender: TObject);
var
  f: TForm5;
begin
  f := TForm5.Create(self);
  f.Caption := 'Show ' + TimeToStr(now);
  f.Show;
  // f wird von seinem Parent freigegeben,
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Aug 2010 um 18:34 Uhr)
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#5

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 18:54
geht eben nicht, denn jeder Aufruf irgendeines .ShowModal sperrt alle Forms, welche zu diesem Zeitpunkt schon angezeigt werden.

Heißt also, daß du mit Form2 in deinem Button die Form1 auch mit sperren würdest.


Probier es einfach mal aus:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var
  f: TForm5;
begin
  f := TForm5.Create(self);
  f.Caption := 'ShowModal ' + TimeToStr(now);
  f.ShowModal;
  f.Free;
end;

procedure TForm5.Button2Click(Sender: TObject);
var
  f: TForm5;
begin
  f := TForm5.Create(self);
  f.Caption := 'Show ' + TimeToStr(now);
  f.Show;
  // f wird von seinem Parent freigegeben,
end;
Danke, so gehts!

Nach ein bisschen Nachdenken und Debuggen bin Ich noch auf Folgende Lösung gekommen: EnableWindow(Form3.Handle, True) .

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 19:37
geht eben nicht, denn jeder Aufruf irgendeines .ShowModal sperrt alle Forms, welche zu diesem Zeitpunkt schon angezeigt werden.

Heißt also, daß du mit Form2 in deinem Button die Form1 auch mit sperren würdest.
Weiß ich doch Die Frage war aber "ist es Möglich zwei Forms _gleichzeitig_ Modal anzuzeigen?" und das geht. Man kann halt immer nur in dem aktuell modalen arbeiten. Womöglich war die Frage nicht richtig formuliert?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zwei Forms Modal anzeigen

  Alt 10. Aug 2010, 19:42
Zitat:
Habe schon versucht eine andere Form per Enabled := true wiederzubeleben, leider ohne Erfolg.
Das hat mich denken lassen, er möchte beide Forms "aktiv" haben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#8

AW: Zwei Forms Modal anzeigen

  Alt 11. Aug 2010, 06:42
Ja, war meinerseits unglücklich Formuliert, Sorry.
  Mit Zitat antworten Zitat
olaf

Registriert seit: 4. Mai 2009
Ort: Iserlohn
82 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Zwei Forms Modal anzeigen

  Alt 11. Aug 2010, 08:36
Hallo,

eine Möglichkeit wäre, wenn ich dein Problem richtig verstehe, Formsyle auf stayontop für beide Forms zu setzen und den Aufruf mit

application.normalizetopspots;
form.showmaodal;

und in onclose

application restoretopspots.

Olaf
  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 09:41 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