Hallo Christian
Am 08.08.2007 um 10:00 schrieb Christian Hahn:
MDI-Fenster gibt es offenbar nur unter Windows. Wie ließe sich
entsprechendes für die anderen Betriebssysteme realisieren?
Ich denke es gäbe mehrere Ansätze um das zu lösen aber wohl keiner
wird wirklich bequem sein. Ich würde persönlich mir zuerst nochmals
überlegen ob es wirklick MDI sein muss. Denn das ist ja z.B. unter
Mac alles andere als üblich.
In meinem Fall böte sich MDI wirklich an: Mein Programm hat mehrere
Fenster
mit Tabellen, die möglichst gleichzeitig zu sehen sein sollen, die
einzelnen
Fenster sollen jedoch auch beliebig vergrößert werden können (und
dann über
den anderen Fenstern liegen).
Naja eine wohl relativ einfache Variante wäre alles in ein Fenster zu
packen und dann einen Steg zwischen die Tabellen zu machen, damit man
die Breite der einzelnen Tabellen verschieben kann. Wie z.B. bei Mail
wo man die Breite der linken Spalte breiter machen kann. Damit würde
aber das überlagern nicht gehen.
Weitere Variante wäre mit einem Canvas eine eigene Mdi Oberfläche zu
Programmieren, da müsstest du aber dann schauen wie du die
Steuerelemente platzierst (denke diese Lösung ginge am besten, wenn
der Inhalt der Fenster auch alles selber erstellt wird). Was bei
dieser Lösung ein Problem sein wird ist wohl die Geschwindigkeit und
es ist relativ aufwändig. Dafür würde das dann ohne weiteres auf
allen System laufen und auch gleich aussehen und sich gleich verhalten.
Z.Zt. habe ich die einzelnen Fenster als gewöhnliche Document-Fenster
ausgelegt. Aber wo könnte man das für alle Fenster gültige Menü
unterbringen.
Ehm das verstehe ich nicht ganz, unter Mac ist doch das Menu eh in
der Menubar, für Windows und Linux, könntest du noch ein weiteres
Fenster machen, das du Horizontal über allen anderen Positioniert, so
als eine Art Fake Menubar. Im Office für Mac wurde die Toolbar da
auch so ähnlich gelöst.
Um dann noch einen schönen Hintergrund alla Mdi zu bekommen könntest
du noch ein weiteres Fenster nehmen das dann einfach so gross ist,
das alle anderen darin liegen. Müsstest nur einen Code finden, der es
verunmöglicht das deine Dokumentfenster hinter das grosse geraten.
Keine Ahnung ob man das irgendwie hinbekommt (wird sicher ein
gebastel). Dann fehlen dann noch die Scroll-Implementierung für das
Hintergrundfenster und das richtige Verhalten für Minimierung und
Grössenveränderung.
Eine weitere Möglichkeit wäre vielleicht das neue Steuerelement vom
RB2007 (keine Ahnung ob das die aktuelle Version ist). Dort gibt es
doch so ein Objekt, das man wie ein Fenster desingen kann. Und diese
kann man dann in andere Fenster einfügen. Vielleicht lässt sich mit
dem was machen.
Ich persönlich würde wohl die Canvas-Variante nehmen oder die letzte
(wenn ich die aktuelle RB Version hätte). Aber natürlich nur wenn es
wirklich nicht anders geht.
gruss Christiaan