Webwalk

Spaziergang durchs Web

Mich faszinieren immer wieder Projekte von anderen. Man kann darin stöbern, findet neue Ideen und Informationen zur Verbesserung des eigenen Programmierstils. Es gibt nicht viele solche Freeware-Projekte, die auch noch möglichst in VB.NET sein sollten, die mich wirklich vom Hocker gerissen haben. Die paar, die ich inzwischen gefunden habe, will ich hier mal kurz beschreiben.

Vollständige Projekte

Weifen Luos Dock Panel Suite

Die Dock Panel Suite von Weifen Luo ist ein bequem in Windows Forms zu verwendender Dock-Manager. Er ermöglicht, Fenster nebeneinander anzudocken, per AutoHide verschwinden zu lassen, Forms per Drag & Drop in ein TabControl einzubinden. Die Quellcode liegt in C# vor.

Im Download auf SourceForge.net sind zu finden: Die DockPanel Suite als DLL, ausführliche Dokumentation sowie ein VB .Net Beginners Cookbook, in dem beschrieben ist, wie man die DLL in eigenen Projekten verwendet.

Einmal ist die Dock Panel Suite eine sehr nützliche Komponente, zum Anderen ist es sehr interessant, sich mal den Code anzusehen. Der Code ist gut dokumentiert bzw. selbst erklärend, enthält eine ganze Reihe GDI+-Funktionen sowie viele Vorgehensweisen, die man ins eigene Programmierverhalten "einbauen" kann. Eine ältere Version der Suite hab ich sogar mal (funktionstüchtig) in VB übersetzt, allerdings ist für mich für eine Wiederholung hinderlich, dass recht viele API-Funktionen mit in VB nicht mehr verwendeten Datentypen eingebunden und reichlich Schleifen / Auflistungen, deren Grenzen zeitaufwändig manuell angepasst werden müssen, vorhanden sind.

Echt nützlich und einfach zu verwenden: Die Dock Panel Suite von Weifen Luo.

The Netron Project

Ein richtig ordentliches umfangreiches Grafik-Projekt mit frei verfügbarem Quellcode. Und dazu noch was nützliches. Schon immer hab ich was gebraucht, um meine Projekte zu planen. Netron Cobalt produziert Fluss- und Baumdiagramme mit ansehnlichen Möglichkeiten. Natürlich, es bleibt immer was zu wünschen übrig...

Der Quellcode liegt in C# für .NET Framework 1.1 vor und enthält eine ganze Menge an GDI+-Funktionen, daneben eine Graphic-Library (Netron.GraphLib) mit tiefen Vererbungsstrukturen und reichlich Verwendung von Interfaces sowie ausgefeilten mathematischen Funktionen. Alle anzuzeigenden Elemente (Formen für Flussdiagramme mit Andock-Punkten für Verbindungs-Pfeile, unterschiedliche Typen von Verbindungslinien und -Pfeilen) werden in eine Bibliothek verpackt. Jede dieser Bibliotheken im Anwendungsverzeichnis wird beim Programmstart nach Elementen durchsucht; diese Elemente sind dann in unterschiedlichen Auswahl-Controls und per Kontext-Menü verfügbar. Ihre Eigenschaften können über ein Property-Grid geändert werden. Man zieht ein neues Element einfach auf ein Graph-Control-Fenster; und dann kann man mit der Maus Pfeile und Verbindungslinien zwischen den Elementen ziehen. Relativ einfach kann man neue Bibliotheken mit eigenen Elementen für Flussdiagramme anlegen. Was mir noch fehlt: Bisher gibt's nur vier Andockpunkte (Nord, Süd, Ost und West) - ich würde mir vier mehr wünschen (NO/SO/NW und SW). Das kann man sich zwar selbst konstruieren, indem man die C#-Basis entsprechend erweitert, aber man hat dann wieder einen exotischen Ableger von einem OpenSource-Projekt mehr... Daneben stört mich, dass die Eigenschaften von angezeigten Formen und Pfeilen nur umständlich über ein Property-Grid einzustellen sind. Ein eigenes Editor-Fenster mit Controls und Editoren für die unterschiedlichen Eigenschaften wäre praktischer. Hinderlich dafür ist, dass die in Pakete eingepackten "Anzeige-Objekte" ihre Properties nur per Reflection frei geben. Um dies anzuzeigen und zu editieren, eignet sich natürlich ein Property-Grid, ein eigenes Editor-Fenster würde wieder einen Eingriff in den C#-Quellcode erforderlich machen. Daneben ist in der aktuellen Version (Cobalt 2.2.1980) von Francois Vanderseypen eine erweiterte Variante der Dock Panel Suite von Weifen Luo verwendet. Im Lizenz-Dokument ist auch Lutz Roeder genannt. War er nun Mitverfasser einer früheren Version?? Wäre mal interessant, das zu erfahren. Inzwischen ist Lutz Roeder (.NET Reflector) Microsoft-Mitarbeiter und arbeitet an der neuen Expression-Suite mit. Mir fiel auf, dass die Klassen-Darstellung in Netron sehr der im neuen Klassen-Designer im Visual Studio ähnelt. Würde mich mal interessieren, wie der Weg dahin war...

Also, ein sehr interessantes Projekt. Der Verfasser, Francois Vanderseypen, arbeitet derzeit nicht mehr an diesem Projekt. Entweder hat er eine gute Anstellung gefunden oder selbst eine Firma gegründet. Schade, aber irgendwie muss man sein Brot ja verdienen.

Ach ja, bei Sourceforge gibt es nur noch eine Exe zum Installieren zum Download. Beim Installieren wird der Quellcode im Anwendungsverzeichnis als Projekt installiert. Der Haken: Die Setup-Exe verlangt unbedingt die Anwesenheit von .NET Framework 1.1 . Um dieses Problem zu beseitigen, gibt's extra Tools im Web, mit denen man eine Setup-Exe auch unter einer neueren Framework-Version lauffähig machen kann.

Letzte Nachricht: Francois Vanderseypen arbeitet inzwischen an einer WPF-Version seines Programms.

Netron Cobalt: Mit der Maus Objekte auf die Zeichenfläche ziehen, diese dann mit Pfeilen verbinden und einfach die Eigenschaften dieser Objekte (Farbe, Rahmen, Inhalt) anpassen.

SharpDevelop

Dies ist der bekannteste und derzeit beste Freeware-Editor für Visual Basic .NET und C#. Dazu kann der Quellcode komplett heruntergeladen werden. Ein schönes Beispiel für die Gestaltung eines umfangreicheren Projektes mit jeder Menge Anregungen. In C# geschrieben, und recht gut in Visual Basic zu übersetzen. SharpDevelop selbst enthält einen Code-Übersetzer, der ganze Projekte inklusive Namespaces von C# nach VB.NET übersetzen kann. Daneben sehr interessant ist der Code-Editor selbst.

Wenn einer der SharpDevelop-Programmierer mal irgendwo in Deutschland einen Vortrag zum Thema hält, informiert mich mal. Es begeistert mich, wie es der / die Verfasser schaffen, ein Projekt mit diesem Funktionsumfang zu planen und die Programmier-Aufgaben auf verschiedene Schultern zu verteilen.

Ein Blick auf das Hauptfenster von SharpDevelop

Controls

Ruler Control

Ein C# Control von Bill Seddon, das Lineale auf Windows Forms in unterschiedlichen Stilen und mit unterschiedlichen Skaleneinteilungen anzeigen kann. ( codeproject.com)

Control zum Darstellen von Linealen auf Windows Forms

ImageCombo

Einfaches C#-ComboBox-Control zur Darstellung von Images mit Text in einer ComboBox. Leicht in VB.NET zu übersetzen und in eigenen Projekten zu verwenden. Beitrag von Niels Penneman auf codeproject.com.

ImageCombo - stellt Bilder und Text in einer ComboBox dar

Color Picker Clone

Control von Danny Blanchard. Der für mich komfortabelste Color Picker bei CodeProject, geschrieben in C#. Vor einigen Monaten habe ich dieses Projekt in Visual Basic übersetzt und mit ein paar eigenen Features versehen (zu finden auf den Code-Seiten weiter oben). Dies hier ist das Original.

Danny Blanchard's Color Picker

TreeListView

Braucht man öfters mal: Ein TreeView-Control, das eine Liste wie ein ListView-Steuerelement enthält. Ist zwar noch in der 2003er Visual Basic-Version und vom Look & Feel nicht ganz zu den neueren Windows Forms Controls passend, dafür aber gut durchdacht programmiert und anpassbar. Ohne viel Mühe lassen sich die Column-Headers anders zeichnen, auch dass ganze Rows selektiert werden können, lässt sich einrichten oder dass Icons oder CheckBoxen zusätzlich "eingebaut werden". (SimonCampbell, CodeProject)

Ein Blick auf das TreeListView-Control

Creating a Design Surface Using Windows Forms and GDI+ in Microsoft .NET

Duncan Mackenzie - MSDN. Es lohnt sich unbedingt, dieses Control mal genau zu studieren. Eignet sich als Grundlage für WYSIWYG-Controls und bietet eine durchdachte Klassenhierarchie. Ist noch mit VB 2002 erstellt, und, wie man nach dem Import in VB 2005 an den Warnungen erkennen wird, arbeitete man auch damals nicht ganz fehlerfrei. Duncan Mackenzie ist für mich der Vater des kreativen Control-Programmierens, er hat lange Zeit die Columne Coding4Fun beim Microsoft Developer Network geleitet. Es lohnt sich auch heute noch, diese Seite immer mal wieder anzusehen.

Duncan Mackenzies Design Surface