Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Wie 2 gleichrangige Forms erzeugen?! (https://www.delphipraxis.net/61535-wie-2-gleichrangige-forms-erzeugen.html)

Christian.Ossi 22. Jan 2006 18:07


Wie 2 gleichrangige Forms erzeugen?!
 
Wie kann ich 2 Formulare erzeugen, die dann sozusagen beide gleichrangig sind:
Soll heißen, dass keins von beiden das andere überdecken soll - also man
z.B. mit den Maus durch klicken auf eins von beiden dieses als aktives
Formular hat und das andere dadurch inaktiv wird und umgekehrt.
Denn wenn man "normal" mit ShowModal ein Formular erzeugt, dann überdeckt dieses ja das vor-
hergehende.

Anwendungsbeispiel wäre, wenn ich ein Fenster habe aus dem ich ein kleines Tool,
wie einen MP3-Player starte und man dann dennoch auf das Fenster zugreifen kann,
aus dem man ihn gestartet hat, um z.B. ein weiteres Programm zu starten.
Weil das ja ungünstig ist, wenn ein MP3-Player alles andere überlagert?!?!


Danke schonmal!

sniper_w 22. Jan 2006 18:09

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Form2.Show;
  Application.Run;
end

Christian.Ossi 22. Jan 2006 18:26

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Mein Programm ist so aufgebaut:
Erst kommt eine Art Dialog (Form) zum Programmstart - dieses wird unsichtbar gemacht
und startet in einer DLL eine Prozedur.
diese Prozedur innerhalb der DLL erzeugt ein neues Programmfenster (also das eigentliche Hauptfenster?!?)
Und eben auf diesem Fenster befindet sich ein Button, um ein weiteres zu öffnen (eben das angesprochene MP3-Player-Beispiel)
Dies geschieht wieder durch einen Aufruf einer DLL Prozedur der nächsten DLL, die auch das nächste Form enthält (MP3-Player-Oberfläche)

Diese beiden (also nicht das ganz am anfang unsichtbar gemachte) gleichrangig sein.

Christian.Ossi 22. Jan 2006 21:33

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Also ich habe die beiden Forms nicht direkt hintereinander im Hauptprogramm,
sondern nacheinander aus dem jeweiligen Form heraus geöffnet!

Mystic 22. Jan 2006 23:27

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Ich verstehe nicht ganz was du mit 'gleichrangig' meinst. Soll einfach nur das erste Formular (aus dem du das Zweite öffnest) immer noch zugreifbar sein? Dann nimm einfach Show statt ShowModal.

Christian.Ossi 23. Jan 2006 15:34

Re: Wie 2 gleichrangige Forms erzeugen?!
 
ja, mit gleichrangig meine ich, dass alle erstellten Formulare immernoch zugreifbar sind.

Danke, ich probierst mal...


...also habs jetzt mal hier so eingegeben: (in der DLL)

Delphi-Quellcode:
Procedure OeffneDich; Export;
Var MMSF: TMMSF;
Begin
MMSF:=TMMSF.Create(Application);
Try
MMSF.Show;
Finally
MMSF.Release;
End;
End;
Doch wenn diese Prozedur aus dem Hauptprogramm raus aufgerufen wird, erscheint das Fenster nur für einen Bruchteil einer Sekunde und verschwindet sofort wieder?!?

Metatron220 23. Jan 2006 15:55

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Ich hab zwar nicht wirklich so viel Ahnung aber ich denke das liegt an dem
Delphi-Quellcode:
MMSF.Release;

Christian.Ossi 23. Jan 2006 16:02

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Hey danke!

Ich hab jetzt einfach das ganze try...finaly weggelassen und einfach nur Show und fertig.


Ist nur, ich hab in der Schule kein Delphi gelernt - nur bisschen Turbo Pascal.
Wir haben zwar auf unseren Rechnern Delphi 2005 Professional aber die Lehrer können das nicht.
Jetzt machen wir grad in der 12/2 eine Projektarbeit und ich hab ja immer schonmal
zuhause - "lerning by doing" rumgespielt mit Delphi. Jetzt hab ich mir die C't 13/05 besorgt
und Delphi 2005, um dort mal den Lehrern zu zeigen, was da möglich ist.
Nur scheitert es manchmal bei mir an so einfachen Sachen :lol:

DataCool 23. Jan 2006 17:46

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Hi,

durch das weglassen des "Release" sollte Dein Programm jetzt zwar laufen, aber, jede Form die Du erzeugst wird erst wieder freigegeben wenn Du Dein Programm komplett beendest.

Das mit dem try finally ist 100% richtig wenn Du mit showmodal arbeitest, weil das Programm bei showmodal solange wartet bis das Formulat geschlossen wird. Deshalb schaffst Du es in Deiner Variante auch nicht "gleichwertige" Formulare zu erzeugen.

Wenn Du mit show arbeitest, wird die Form gleich angezeigt und weiter im Quelltext gearbeitet!
In Deinem Fall :

- Form erzeugen
- Form anzeigen
- Form wieder freigeben

Meiner Meinung nach solltest Du die erzeugten Formulare in einer zusätzlichen Liste speichern und selber wieder freigeben, ist einfach superer.

Gruß Data

Christian.Ossi 23. Jan 2006 18:18

Re: Wie 2 gleichrangige Forms erzeugen?!
 
Naja, ich hab jetzt in die OnClose jedes Formulars
Delphi-Quellcode:
Release
geschrieben.
Reicht das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr.
Seite 1 von 2  1 2      

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