AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Formular kann nicht erstellt werden- keine MDI Formul. aktiv
Thema durchsuchen
Ansicht
Themen-Optionen

Formular kann nicht erstellt werden- keine MDI Formul. aktiv

Ein Thema von berens · begonnen am 3. Sep 2007 · letzter Beitrag vom 7. Okt 2010
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Formular kann nicht erstellt werden- keine MDI Formul. aktiv

  Alt 3. Sep 2007, 09:13
Hi!

Meldung beim Programmstart: Formular kann nicht erstellt werden. Zur Zeit sind keine MDI-Formulare aktiv

Ich habe eine MDI/SDI Anwendung entwickelt, die nun wiederum als Teilprogramm in einer anderen Anwendung dargestellt werden soll. Dieses "Hauptprogramm" hat eine TPageControl mit 3 TTabsheets, jedes mit jeweils einem eigenen Teilprogramm.

Da nun dieses Teilprogramm MDI/SDI ist, kommt es zu der o.g. Fehlermeldung da das Hauptprogramm kein MDI/SDI ist.

Das MDI-Formular ist über bla.Create und Parent := Tabsheet3 in das Programm eingebunden.

Was tun?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Formular kann nicht erstellt werden- keine MDI Formul. a

  Alt 3. Sep 2007, 09:49
Vor dem Setzen von Parent := ... einfach FormStyle:=fsNormal.
Andreas
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Formular kann nicht erstellt werden- keine MDI Formul. a

  Alt 3. Sep 2007, 09:58
Hab natürlich vergessen zu erwähnen dass die Fehlermeldung beim Erstellen eines MDI-Childs kommt, und nicht beim Erstellen des MDI-Fensters ansich.

FormStyle:=fsNormal hilft zwar in soweit, dass ich das Programm ohne Fehlermeldung starten kann, aber somit ist ja dann leider auch meine MDI/SDI Funktion weg.
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: Formular kann nicht erstellt werden- keine MDI Formul. a

  Alt 3. Sep 2007, 10:04
Das Hauptformular muss in diesem Fall FormStyle=fsMDIForm haben
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Formular kann nicht erstellt werden- keine MDI Formul. a

  Alt 3. Sep 2007, 11:50
Ich versuche nun das Problem anders anzugehen, drehe mich aber im Kreis:

Das MDI Teilprogramm soll nun nicht mehr im Hauptprogramm angezeigt werden. Das Hauptprogramm erzeugt eine Variable mit

Delphi-Quellcode:
frmBla := tfrmBla.Create(NIL);
frmBla.Parent := NIL;
frmBla.ParentWindow := GetDesktopWindow;
frmBla.Show;
frmBla.BringToFront;
frmBla.FormStyle := fsMDIForm;
Damit sollte der Benutzer nun quasi 2 Programme in der Taskleiste haben. (Ich will aber keine 2. .exe Datei ausliefern!)

Die Fehlermeldung wird beim Erzeugen von MDI-Child-Fenstern immernoch angezeigt. Was nun?
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Formular kann nicht erstellt werden- keine MDI Formul. aktiv

  Alt 6. Okt 2010, 10:34
Neuer Versuch, alte Probleme.

Nochmal zur Zusammenfassung: Ich habe ein Hauptformular (kein MDI!), mit dem ich verschiedene Teilprogramme starten kann. Meistens SDI, ein MDI Programm. Da alle die selben Units verwenden, möchte ich, statt mehrere .exe Dateien auszuliefern, einfach etwas wie
Delphi-Quellcode:
frmTeilprogramm1 := Teilprogramm1.Create(Application); // Erbt von TForm
frmTeilprogramm1.Show;
frmTeilprogramm1.FreeOnRelease
machen.

Wie ich aus anderen Threads / Foren entnehmen konnte, muss scheinbar wirklich das allererste erzeugt Formular ein MDI-Formular sein. Wenn ich nun mein "Start-Center" FormStyle auf fsMDIForm stelle, kann ich den o.g. Code auch verwenden, allerdings wird das MDI-Child (Teilprogramm1.Child1) nun im "Start-Center" hinter allen Buttons etc. angezeigt und nicht innerhalb des MDI-Formulars Teilprogramm1.

Auch folgende Teilen schaffen keine Abhilfe:
Delphi-Quellcode:
with Teilprogramm1.Child1 do begin
  Parent := Teilprogramm1;
  SetParentComponent(Teilprogramm1);
  ParentWindow := Teilprogramm1.Handle;
  Windows.SetParent(Handle, Teilprogramm1.Handle);
end;
Wenn es sogar möglich ist, ein normales Fenster mit SetParent dem Desktop oder anderen Programmen unterzuschieben, warum zur %$"&$§$"$§ kann ich dann nicht das MDI-Child in das Fenster bringen, in dem es sein soll?

Es ist leider auch nicht möglich (soweit ich das nun sehe), das "Hauptformular" der Anwendung zeitweise zu ändern.

Was wäre denn, wenn ich dieses (am selten benötigste) MDI-Fenster im Projektquelltext erzeugen lasse und unsichtbar schalte? Was hat das für Auswirkungen, wenn ich das "Start-Center" schließe?

So sinnlos es sich anhört, aber für den Kunden kann es unter Umständen durchaus sinnvoll sein, (trotz MDI-Anwendung!) mehrere Instanzen des MDI-Forms zu starten. Was dann? Müssen alle Formulare aus der 2ten Instanz im MDIForm angezeigt werden, das als Erstes erzeugt wurde? Das kann nicht wirklich M$ (oder wessen auch immer) Ernst sein...

Für irgendwelche Ideen wäre ich sehr dankbar. Ich fände es echt blöd, wenn ich statt 1x 5 MB .exe-Datei mit allen Teilprogrammen nun 10x 5 MB .exe-Dateien mit jeweils nur einem Formular ausliefern zu müssen -.-
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#7

AW: Formular kann nicht erstellt werden- keine MDI Formul. aktiv

  Alt 7. Okt 2010, 13:17
Hallo,

ich denke, dein Problem ist die generelle Vorgehensweise. Eine MDI-Anwendung innerhalb einer SDI-Anwendung laufen zu lassen bringt nichts, bzw. geht soweit ich weiß nicht. Oder ist zumindest mit sehr viel Problemen und Aufwand verbunden.

Darum würde ich es so machen: Eine Hauptanwendung als MDI, und alles was du sonst noch brauchst in jeweils ein eigenständiges MDI-Fenster packen. Vielleicht hast du ja gerade hier ein Verständnisproblem: Die MDI-Fenster müssen nicht zwangsläufig alle vom gleichen Vorfahren abgeleitet sein, so wie es in der Beispielanwendung gemacht wird.

Gruss
musicman
  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 23:08 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