Das letzte mal hab ich die DockPanelSuite im Artikel DockPanelSuite – professionelle Fenster, vorgestellt.
Heute gibt es wie versprochen ein Tutorial in C++.
Ich verwende Visual Studio 2005. In anderen IDEs sollte es allerdings so ähnlich funktionieren, wenn diese NET Programmierung zulassen.
1. Als erstes benötigt Ihr die Programmbibliothek DockPanelSuite von Weifen Luo. Die gibts bei SoureForge:
http://sourceforge.net/project/showfiles.php?group_id=110642 .
Ihr benötigt die Datei DockPanel_Versionsnummer_Bin.zip, denn darin ist die schon erstellte Datei „WeifenLuo.WinFormsUI.Docking.dll„.
2. Visual Studio starten und ein neues Projekt anlegen, dazu wählt Ihr Windows Forms Application und gebt als Projektnamen DockPanelTest ein.
3. Wählt die leere Form aus und gebt Ihr im Properties-Fenster einen Namen. Setzt unter WindowStyle die Eigenschaft „IsMdiContainer“ auf „true“.
4. Die Datei „WeifenLuo.WinFormsUI.Docking.dll“ sollte relativ zum Programmpfad eingebunden werden. Also ist es ratsam die Datei in den Projektordner zu kopieren.
5. Vom SolutionExplorer zur Klassenansicht wechseln. Dann kann man über den Menüpunkt Projekt, oder mit einem Rechtsklick in die Klassenansicht, die Abhängigkeiten (References) auswählen. Klickt auf „Add New Reference“ (Neue Abhängigkeit hinzufügen).
Die Registerkarte „Browse“ wählen, zum Ordner mit der DLL wechseln und die DLL auswählen. Mit Ok bestätigen, und schon erscheint die DLL in der „Referenzen“-Liste. Das Fenster könnt Ihr ebenfalls mit ok schließen.
6. Öffnet die Toolbox, klickt einmal mit der rechten Maustaste und wählt den Menüpunkt „Choose Items“ – Elemente auswählen. Sucht in der Liste nach DockPanel, dahinter sollte im Namespace WeifenLuo… stehen, macht ein Häckchen rein und schließt den Dialog wieder mit OK.
7. Jetzt könnt Ihr das neue Element DockPanel ganz einfach in euer Fenster rüber ziehen. Über den kleinen Pfeil dann ganz einfach ins Elternfenster „eindocken“ – „Dock in Parent“.
8. Das Hauptfenster ist darauf vorbereitet eure Fenster anzuzeigen. Es wird aber noch ein Form benötigt, das darin angezeigt werden kann.Klickt mit der rechten Maustaste einmal in den Solution-Explorer und wählt „Add->New Item“ aus. Erstellt ein neues Windows Form mit dem Namen „MyChild“.
9. Lasst euch den Quelltext dieses neuen Fensters anzeigen. Klickt dazu am besten im Design-Fenster einmal mit rechts auf das Form und wählt den Menüpunkt „View Code“.
10. Die Stelle an welcher euer Kindfenster seine Eigenschaften von einem normalen Form erbt:
public ref class MyChild : public System::Windows::Forms::Form
muss verändert werden zu:
public ref class MyChild : public WeifenLuo::WinFormsUI::Docking::DockContent
Dadurch gebt Ihr dem Form alle Eigenschaften eines andockbaren Dokuments. Die Eigenschaften eines „normalen“ Forms gehen nicht verloren und Ihr könnt die Form wie immer im Design-Modus bearbeiten, weil DockContent von einem normalen Form abgeleitet ist.
11. Wechselt noch einmal zu eurem Hauptfenster und fügt einen neuen Menüstreifen aus der Toolbox ein (MenuStrip).
12. Erstellt einen Hauptmenüpunkt „Datei“ und unter diesem einen weiteren Menüpunkt „Neu“.
13. Mit einem Doppelklick auf den eben erstellten Menüpunkt „Neu“ erstellt Ihr einen Eventhandler und landet auch gleich an der richtigen Stelle im Code.
14. Hier könnt Ihr eure Kindfenster mit folgendem Code erstellen:
DPTest::MyChild ^newChild = gcnew DPTest::MyChild; newChild->ShowHint = WeifenLuo::WinFormsUI::Docking::DockState::Document; newChild->Show(dockPanel1);
Die erste Zeile erzeugt ein neues MyChild-Objekt. In der zweiten wird festgelegt das es in der Dokumentansicht dargestellt werden soll, d.h. mittig ins Hauptfenster eingedockt. Mit der Dritten Anweisung wird das Fenster im dockPanel1 angezeigt.
15. Als letztes solltet Ihr darauf achten das die Datei „MyChild.h“ in der Datei „Form1.h“ auch eingebunden wird. Dazu einfach nach ganz oben scrollen und unter
#pragma once
die Zeile
#include "MyChild.h"
einfügen.
16. Jetzt könnt Ihr das Projekt kompilieren und ausführen.
Mit dem Menüpunkt „Datei->Neu“ könnt Ihr jetzt Fenster erstellen die automatisch in das Programm eingedockt werden. Probiert ruhig ein wenig damit rum. Die Fenster lassen sich frei verschieben und überall eindocken, ineinander verschachteln und so weiter.
So viel als einleitender Artikel. Demnächst werd ich euch noch ein paar Dinge zeigen die Ihr mit DockPanelSuite so machen könnt. Bis dahin.