<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MDI Probleme]]></title><description><![CDATA[<p>Ich möchte eine Anwendung machen mit mehreren Kindfenstern.<br />
Ich starte das Programm und er liest mehrere Dateien mit Daten ein, welche in Eingabefelder zum Teil dann kommen sollen.</p>
<p>Wenn man im MDIChild OnShow Ereignis eine Update() Funktion aufruft die eben die Felder ausfüllen soll, dann erhält man einen Zugriffsfehler, wohl weil die Daten noch nicht komplett eingelesen sind von der Hauptform.</p>
<p>Dann dachte ich, ich mach das Update() über die Hauptform ala MDIChildren[0]-&gt;Update();<br />
Da werd ich aber blockiert, da MDIChildren Update() nicht kennen will. Auch verständlich, aber somit auch dieser Weg versperrt.</p>
<p>Auch schade find ich es, das man MDIChild nicht verbergen kann und nur ein bestimmtes anzeigen.</p>
<p>Falls jemand weiss wann und wie ich meine Update() Funktion aufrufen muss, damit die geladenen Daten in des Childfensters Eingabemaske einegtragen werden können, wäre echt toll! :xmas1:</p>
<p>(Eine Timer Funktion ist keine Option)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168884/mdi-probleme</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 14:41:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168884.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Dec 2006 08:41:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 08:41:46 GMT]]></title><description><![CDATA[<p>Ich möchte eine Anwendung machen mit mehreren Kindfenstern.<br />
Ich starte das Programm und er liest mehrere Dateien mit Daten ein, welche in Eingabefelder zum Teil dann kommen sollen.</p>
<p>Wenn man im MDIChild OnShow Ereignis eine Update() Funktion aufruft die eben die Felder ausfüllen soll, dann erhält man einen Zugriffsfehler, wohl weil die Daten noch nicht komplett eingelesen sind von der Hauptform.</p>
<p>Dann dachte ich, ich mach das Update() über die Hauptform ala MDIChildren[0]-&gt;Update();<br />
Da werd ich aber blockiert, da MDIChildren Update() nicht kennen will. Auch verständlich, aber somit auch dieser Weg versperrt.</p>
<p>Auch schade find ich es, das man MDIChild nicht verbergen kann und nur ein bestimmtes anzeigen.</p>
<p>Falls jemand weiss wann und wie ich meine Update() Funktion aufrufen muss, damit die geladenen Daten in des Childfensters Eingabemaske einegtragen werden können, wäre echt toll! :xmas1:</p>
<p>(Eine Timer Funktion ist keine Option)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199313</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Fri, 29 Dec 2006 08:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 09:28:28 GMT]]></title><description><![CDATA[<p>Wenn du deine Dateien im Konstruktor der Hauptform einliest, dann sollte das eigentlich abgeschlossen sein, bevor die Childs aufgebaut werden.<br />
Das &quot;Füllen&quot; der Childs erfolgt sinnvollerweise als letzter Schritt im OnCreateMDIChild (bezogen auf das Standard-MDI-Projekt des BCB).<br />
Ob hier aber tatsächlich die Ursache für deine Zugriffsverletzung liegt, lässt sich anhand der spärlichen Informationen nicht sagen.</p>
<p>kampfmuffin schrieb:</p>
<blockquote>
<p>Auch schade find ich es, das man MDIChild nicht verbergen kann und nur ein bestimmtes anzeigen.</p>
</blockquote>
<p>Maximiere das Child, dann ist nur dieses sichtbar. Wenn du <strong>immer</strong> nur ein Child anzeigen willst, dann ist MDI wahrscheinlich nicht das Richtige, eine normale Form und TFrame könnte da eher passen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199323</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 29 Dec 2006 09:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 09:49:59 GMT]]></title><description><![CDATA[<p>Ich lade die Daten in TForm1::OnCreate()<br />
Die Update() Funktion im MDIChild in <em><em>TForm2::TForm2(TComponent</em> Owner)</em>* und andermal auch in <strong>TForm2::OnShow()</strong> abgelegt, bei beiden bekomme ich dann in der Update() Funktion ein &quot;ungültige Gleitkommaoperation&quot; beim ausführen.<br />
Wenn ich die Update() Funktion auf einen Button lege und per Hand betättige klappt alles wunderbar.</p>
<p>Ja das MDIChild mach ich momentan mit WindowState maximiert. Ich dachte nur daran das wenn man es seperat aufrufen kann, dann dort kein Fehler mehr kommen sollte.<br />
Eine Möglichkeit die ich noch sehen würde, wäre ein Begrüssungs MDIChild Fenster vorzuschalten und über Menü Aufruf auch erst das Update zu machen.</p>
<p>Mit TFrames hatte ich noch garnichts zu tun, mal anschauen. Mehrere normale Fenster wäre nicht so ideal, da das mal 10 &quot;MDIChild&quot; werden sollen und jedes so gross wie die MainForm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199333</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Fri, 29 Dec 2006 09:49:59 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 10:48:32 GMT]]></title><description><![CDATA[<p>TFrame ist eine Art Container für grafische Komponenten, den du auf der Form nach Wunsch ein- oder ausblendest.</p>
<p>Was die Child-Probleme angeht: sieh dir an, wie das Erzeugen und Befüllen der Fenster im bereits erwähnten Standard-MDI-Projekt gelöst ist, ggf. kannst du das auch bei deinem Programm umsetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199356</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 29 Dec 2006 10:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 11:05:28 GMT]]></title><description><![CDATA[<p>Gibt es dieses Beispiel auch im BCB5? Ich kann es nirgends finden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199362</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Fri, 29 Dec 2006 11:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 11:35:18 GMT]]></title><description><![CDATA[<p>Datei -&gt; Neu -&gt; [Andere -&gt;] Projekte -&gt; MDI Anwendung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199370</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 29 Dec 2006 11:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 14:13:30 GMT]]></title><description><![CDATA[<p>Also dieses Beispiel wirft mehr Fragen auf als Antworten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>A) Wieso sieht man beim Start nicht das MDIChild?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> Wieso sind die ganzen Funktionen für Fenster nebeneinander/übereinander etc garnicht belegt, jedoch funktionieren. *doppel eek*</p>
<p>Bezogen auf A, bei mir ist das MDIChild bei Programmstart bereits mit sichtbar, ich bekomme es auch nicht ausgeblendet, und wird mit Daten aufgefüllt. In dem Beispiel wird über &quot;Neu&quot; eine Kopie erstellt und mit Daten geladen. Das ein ganz anders gelagerter Fall. Leider.</p>
<p>Bei mir wird in der MainForm global die Daten geladen, auf welche die MDIChilds zugreifen können sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199456</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Fri, 29 Dec 2006 14:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 16:28:25 GMT]]></title><description><![CDATA[<p>Ich habe mich mal mit Frames beschäftigt und die scheinen in der Tat &quot;cooler&quot; zu sein und nicht ganz so eingeschränkt wie MDIChild. Danke für den Tipp!</p>
<p>Jetzt möchte ich zur Laufzeit ein Frame setzen und austauschen.<br />
Ich habe eine MainForm mit zwei Button. Mit dem Klick auf einen Button soll ein Frame in der MainForm angezeigt werden und ein bereits vorhandenes ausgeblendet.</p>
<p>TFrame2 *Frame21 = new TFrame2(this);<br />
Frame21-&gt;Parent = this;</p>
<p>Klappt auch super. Meine Frage wäre jetzt, wenn ich sehr viele Frames zur Auswahl habe, wie entferne ich das vorherige Frame am Besten, ohne dessen Namen zu kennen?</p>
<p>Meine Lösung ginge jetzt in diese Richtung:</p>
<pre><code class="language-cpp">TComponent *Comp;
    for (int i=0;i&lt;ComponentCount-1;i++)
    {
        Comp = Components[i];
        if (~~Comp~~==vom Typ TFrame)
        {
            RemoveComponent(Comp);
        }
    }
</code></pre>
<p>Allerdings weiss ich nicht, wie in der <strong>if</strong> rausbekommen soll, ob es ein TFrame ist, da die Frames &quot;MyFrame1&quot;, &quot;AnderesFrame&quot; heissen.</p>
<p>Ist da jemand draussen, der eventuell die Lösung kennt und mir helfen möchte? :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199553</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Fri, 29 Dec 2006 16:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Fri, 29 Dec 2006 18:14:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>grundsätzlich geht die Typüberprüfung so</p>
<pre><code class="language-cpp">if (dynamic_cast&lt;TMyFrame*&gt;(Comp))
</code></pre>
<p>(dazu muß in den Compileriptionen RTTI aktiviert sein)</p>
<p>Allerdingts ist das nicht sehr effizient, besser ist es einen eigenen Pointer vom Typ TMyFrame als Member des MainForms zu deklarieren. Dort wird immer das aktuelle Frame zugewiesen, so kannst du es auch leicht wieder löschen, oder andere Manipulationen durchführen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199592</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 29 Dec 2006 18:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Tue, 02 Jan 2007 08:51:27 GMT]]></title><description><![CDATA[<p>Danke für deinen guten Tipp.</p>
<p>Wäre das also die optimalste Lösung?</p>
<p>In der MainForm.h Klasse ist *<em>TFrame <em>TMyFrame;</em></em> erklärt</p>
<p>// Löschen falls vorhanden<br />
if (TMyFrame!=NULL) delete TMyFrame;</p>
<p>// Neues TFrame eintragen<br />
TFrame3 *Frame3 = new TFrame3(this);<br />
Frame3-&gt;Parent = this;<br />
Frame3-&gt;Left=200;</p>
<p>// aktuelles TFrame merken<br />
TMyFrame = Frame3;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200952</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Tue, 02 Jan 2007 08:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Tue, 02 Jan 2007 09:57:37 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ja das ist die optimale Lösung.<br />
Nur finde ich die Bezeichnung der Variable TMyFrame schlecht. Mit T sollte man nur Klassen an sich kennzeichnen, konkrete Variablen nicht (Das betrifft nur das menschliche Verständnis, dem Compiler ist es egal solange es eindeutig ist).<br />
Also nenn die Variable nur MyFrame und dein Code ist noch übersichtlicher.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200995</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 02 Jan 2007 09:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to MDI Probleme on Tue, 02 Jan 2007 10:00:25 GMT]]></title><description><![CDATA[<p>Danke für deine Hilfe! :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200996</guid><dc:creator><![CDATA[kampfmuffin]]></dc:creator><pubDate>Tue, 02 Jan 2007 10:00:25 GMT</pubDate></item></channel></rss>