Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Neues Fenster erstellen (https://www.delphipraxis.net/143447-neues-fenster-erstellen.html)

martin_ 16. Nov 2009 12:41


Neues Fenster erstellen
 
Hallo,
ich möchte folgende Funktionalität realisieren. Zb. beim Internet Explorer Datei --> Neues Fenster oder wie in Word Datei --> Neu. Dh. das gesamte Projekt inkl. Menü soll beliebig oft neu erstellt werden. Das müssten mehrere Instanzen vom Projekt sein? Wie lautet der Befehl dazu?
Danke.

toms 16. Nov 2009 12:46

Re: Neues Fenster erstellen
 
Hallo

Du kannst einfach das (Haupt-)Formular dynamisch nochmals erzeugen.

patti 16. Nov 2009 13:22

Re: Neues Fenster erstellen
 
Oder alternativ die Anwendung erneut starten. Schau dir dazu mal ShellExecute an (hab jetzt gerade die Parameter für die Funktin nicht im Kopf, sonst würd ich's dir genauer erklären).

MFG

Edit: Oder wie wäre es mit einer MDI-Anwendung?

martin_ 16. Nov 2009 13:28

Re: Neues Fenster erstellen
 
Zum Test hab ich eine neue VCL-Formularanwendung erstellt und darauf einen Button. Das Formular wird mittels Objektinspektor erstellt. Beim Aufruf der einzelnen Schritte wird zuerst
Delphi-Quellcode:
 Application.Initialize;
 Application.CreateForm(TForm47, Form47);
 Application.Run;
ausgeführt. Und eigentlich müsste es genügen diesen Teil ins Ereignis vom Button zu kopieren, tut es aber nicht. Als nächstes habe ich versucht nur das Formular neu zu erstellen zb. mit
Delphi-Quellcode:
 Form := TForm47.CreateNew(nil);
 Form.Show;
dabei wird die Initialisierung nicht durchgeführt und sobald das Hauptfenster geschlossen wird, beendet auch das neue Fenster.
Vielleicht hat noch jemand einen Tipp.

Danke für den Tipp mit ShellExecute --> Ich schaus mir an.
Edit:

Hier eine Lösung mit ShellExecute:
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar(ParamStr(0)), nil, nil, SW_NORMAL);

martin_ 16. Nov 2009 14:14

Re: Neues Fenster erstellen
 
Im Projekt befindet sich noch eine Memo Komponete mit Inhalt. Wie schaffe ich es den Text zu übergeben bzw. eine Funktion im neuen Programm aufzurufen?

p80286 16. Nov 2009 15:08

Re: Neues Fenster erstellen
 
Hallo Martin,

entschuldige, das erscheint mir ein wenig wirr, warum sollte der Inhalt eines Memos der einen Instanz auch in einem Memo einer weiteren Instanz auftauchen, und was wenn eine dritte, vierte..........

Ansonsten, aus Deiner Frage entnehme ich, daß der Memoinhalt nicht aus einer Datei gelesen wird, dann würde ich Dir zu Pipes raten, aber wie Du das ordentlich synchronisieren willst, ist mir schleierhaft.

Gruß
K-H

Mithrandir 16. Nov 2009 15:15

Re: Neues Fenster erstellen
 
Du solltest es wirklich mal mit Delphi-Referenz durchsuchenMDI versuchen und das Design deiner Anwendung nochmal überdenken. ;)

martin_ 17. Nov 2009 10:25

Re: Neues Fenster erstellen
 
Zitat:

Zitat von p80286
Hallo Martin,

entschuldige, das erscheint mir ein wenig wirr, warum sollte der Inhalt eines Memos der einen Instanz auch in einem Memo einer weiteren Instanz auftauchen, und was wenn eine dritte, vierte..........

Es geht um einen Editor und dort möchte ich den eingegebenen Text überprüfen lassen. Das Resultat soll in einer neuen Ansicht dargestellt werden. Und am einfachsten erscheint es mir den ganzen Editor mit geladen Inhalt neu zu starten. Der Benutzer kann somit auswählen, mit welcher Version er weiterarbeiten möchte.
Eine andere Möglichkeit wäre es mit einem TPagecontrol und 2 TTabsheet zu arbeiten. Der Editor ist allerdings nur für ein SDI ausgelegt. Daher müsste die gesamte Logik (Datenhaltung) dahinter für diese eine Funktionalität angepasst werden, und das möchte ich mir ersparen.

Zitat:

Zitat von p80286
Ansonsten, aus Deiner Frage entnehme ich, daß der Memoinhalt nicht aus einer Datei gelesen wird, dann würde ich Dir zu Pipes raten, aber wie Du das ordentlich synchronisieren willst, ist mir schleierhaft.

Synchoronisieren ist nicht erforderlich.


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