Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - MDI-Child außerhalb platzieren
Blob - Di 06.12.11 19:49
Titel: MDI-Child außerhalb platzieren
Huhu,
im Rahmen des Informatikunterrichts an meiner Schule arbeiten wir mit Delphi 7.
Da mir langweilig war und alle Aufgaben gelöst hatte, bekam ich die Extraaufgabe, eine Art
"MiniPaint" zu erstellen.
Mein Plan war es, das ganze wie GIMP aufzubauen: Ein Hauptformular zum Zeichnen und ein
langgestrecktes Fenster rechts daneben (!) als "Werkzeugliste".
Da ist auch schon das Problem: Wenn ich das Hauptformular als MDI-Parent deklariere,
erscheint das Werkzeug-Fenster als MDI-Child permanent im Hauptfenster, und natürlich auch in einer völlig
inakzeptablen Skalierung.
Wie kann ich das MDI-Child außerhalb des Hauptfensters platzieren?
Gruß,
Blob
jaenicke - Di 06.12.11 20:03
Hallo und :welcome:
Ein MDI-Child benutzt man genau um diesen Effekt zu haben. Wenn du das gar nicht willst, benutze einfach kein MDI-Child bzw. MDI-Parent. ;-)
Nebenbei würde ich das als Toolwindow erstellen (BorderStyle bei dem Toolwindow auf bsToolWindow). Dann sieht es aus wie bei Paint.NET (was ich für GUI-Design bzw. Ergonomie auch für ein besseres Vorbild halte als ausgerechnet Gimp).
bummi - Di 06.12.11 20:08
wie Jaenicke schon erwähnte ......
mit einem kleinen Trick kannst Du es aber trotzdem tun (sinnvoll ist es sicher nicht)
Delphi-Quelltext
1:
| Windows.Setparent(MDICHildFormName.Handle,0) |
Blob - Di 06.12.11 20:12
@ jaenicke: Achso, ich dachte das sei der Sinn von MDI-Anwendungen :D
Wie kann ich das zweite Formular denn dann aufrufen? Ich habe versucht, das zweite Formular im "Form.Create" vom Hauptfenster mit "Form2.Show" aufzurufen, resultiert aber in einer Fehlermeldung.
@ bummi: Wo genau kommt das hin?
jaenicke - Di 06.12.11 20:52
Blob hat folgendes geschrieben : |
| Wie kann ich das zweite Formular denn dann aufrufen? Ich habe versucht, das zweite Formular im "Form.Create" vom Hauptfenster mit "Form2.Show" aufzurufen, resultiert aber in einer Fehlermeldung. |
Erstelle das Formular dort manuell, dann geht das auch. Oder zeige es erst in OnShow an.
Standardmäßig erstellt Delphi die Formulare der Reihe nach automatisch. Das zweite ist dann aber beim Erstellen des ersten (OnCreate eben) noch gar nicht erstellt. ;-)
Blob - Di 06.12.11 21:05
Super, danke euch, das mit den beiden Fenstern habe ich jetzt hinbekommen.
Nun tut sich ein weiteres Problem auf: Ich habe, um die ColorBox zu testen, beim Mausklick im Hauptfenster (beinhaltet ein TImage) Quadrate erzeugt.
Diese Quadrate werden allerdings erst angezeigt, sobald ich das Fenster minimiere und dann maximiere.
Was kann ich dagegen machen?
haentschman - Di 06.12.11 21:29
| Zitat: |
| Nun tut sich ein weiteres Problem auf: Ich habe, um die ColorBox zu testen, beim Mausklick im Hauptfenster (beinhaltet ein TImage) Quadrate erzeugt. |
:gruebel: wo, wie, was ?
...ein klein wenig mehr Detailinformationen wären schon hilfreich. (Quelltext etc.)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!