RESCO Forms Toolkit

Geschrieben von (25.08.2008 00:00 CET)

Einleitung:
Wer schon mal eine nicht-triviale Windows Mobile Anwendung mit dem .NET Compact Framework entwickelt hat, weiß, dass die von Microsoft mitgelieferten Controls nicht unbedingt der letzter Schluss aller Weisheit sind. Sie sind schön für den Anfang, aber wenn es ernst wird, kommt schnell der Wünsch nach besseren Controls. Resco, eine Slowakische Firma aus Bratislava, bietet mit dem Resco MobileForms Toolkit eine Möglichkeit diesen Wunsch zu befriedigen. In Juni 2008 kam die neueste Version, 2008 Volume 2, heraus. Die World of PPC hat sich die Herausforderung gestellt und ein Review geschrieben.
Ich habe die Controls in 3 Gruppen unterteilt, auch wenn Resco das auf ihre Produktseite nicht macht: Multimedia Controls, Outlook Controls und Daten Controls.

Multimedia Controls:
ImageButton
Der ImageButton ist das neueste Control in der MobileForms ToolKit, und füllt eine gähnende Lücke in dem .NET Compact Framework: Der normale Button gibt dem Entwickler keine Möglichkeit, ein Bild statt ein Text zu verwenden. Bis jetzt war der Ausweg einen PictureBox und dessen Click Event zu verwenden. Das funktioniert zwar, aber ist natürlich aus Objekt-Orientiertem Sinn sehr unschön.
Der ImageButton hat also eine doppelte Aufgabe: er soll wie ein Bild aussehen, und sich wie ein Button verhalten. Diese Aufgabe erfüllt der ImageButton so wie ich es erwartet habe. Für den Entwickler gibt es die bequeme Möglichkeit in Visual Studio über das Property Grid die Bilder zu setzen: ein Bild für den normalen Zustand, und eines für den gedrückten Zustand. Es gibt ebenfalls die Möglichkeit die Bilder für VGA Geräte gesondert zu setzen.

Fazit: ein Control, das eine einfache Aufgabe hat und diese gut erledigt. So mag ich meine Controls!

InkBox
Wenn der Postler bei mir zuhause ein Paket abliefert, muss ich oft unterschreiben. Früher hat man da mit zetteln herum tun müssen, heutzutage steckt er mir ein mobile Device zu, wo ich mit dem Stylus eine Unterschrift auf dem Bildschirm malen kann. Mit dem InkBox kann ich diese Funktionalität jetzt auch in meinen eigenen Windows Mobile Anwendungen einbauen.

Das Beispielprogram zeigt wie einfach es ist, den InkBox zu verwenden: das Control wird auf dem Form platziert, und viel mehr braucht man nicht. Farbe und Dicke können natürlich geändert werden. Das Beispielprogram zeigt sinnvollerweise ebenfalls, wie die Eingaben in eine SQL Server Compact Edition Datenbank gespeichert und gelesen werden können - was für eine "Postleranwendung" wohl die beste Variante ist. Die "Zeichnung" in einer Bitmap-Datei speichern ist technisch natürlich ohne weiteres ebenfalls möglich.
Fazit: ein weiteres Control das eine einfache Aufgabe hat, und diese gut erfüllt.


Audio
Das Audio Control bietet die Möglichkeit, Audio-Dateien wieder zu geben oder aufzunehmen. Das funktioniert auch so weit, aber trotzdem bleibt bei mir ein Gefühl das etwas fehlt hängen. Ich finde das API unglücklich gewählt: es gibt die Möglichkeit, die Qualität von der Aufnahme zu anderen über einen Methodenaufruf: SetRecordParameters(int bitsPerSample, byte channels, int samplesPerSec, byte quality). Die byte-Typen sind undurchsichtig, und auch bitsPerSample wäre als enum-Typ besser bedient gewesen.

Fazit: Wenn die Erwartungen einmal an der Realität angepasst sind, ist auch das Audio Control ein gutes und sinnvolles Control das aber noch ein paar Feinschliffe gebrauchen kann.


ImageBox
ImageBox ist ein Control für die Darstellung von Bildern, aber auch für die Bearbeitung von Bildern. Helligkeit, Kontrast und Gamma lassen sich ändern, und ausschneiden oder invertieren ist ebenso möglich. Das bearbeitete Bild kann dann ohne weiteres über die üblichen .NET Methoden gespeichert werden.

Fazit: einfach und gut.

Zip
Die Zip Komponente bietet die Möglichkeit, Zip Dateien anzulegen und zu bearbeiten. Die Zip Datei kann auch im "normalen" Windows geöffnet und extrahiert werden. Einziger wehmutstropfen dabei: wenn eine Datei mit einem Kennwort verschlüsselt wird, kommt in Windows bei öffnen zwar die Aufforderung das Kennwort einzugeben, aber jede Eingabe wird als falsch bewertet, sodass die Datei nicht extrahiert werden kann. Auf dem Windows Mobile Gerät funktioniert das Kennwort anstandslos.

Fazit: eine Zip-Funktionalität ist heutzutage bei ansteigenden Größen von internen und externen Speicher vielleicht nicht mehr so wichtig, aber es ist natürlich nett es zu haben.

CompactChart
Mit CompactChart können einfache Charts dargestellt werden, in 5 möglichen Formate: Pie, Line, Doughnut, Bar und Area. Es können sowohl "live" Daten (die sich also dauernd ändern) als auch "statischen" Daten dargestellt werden. Dies ist ein Control so wie ich es schon einige male gebraucht hätte, allerdings leidet es meiner Meinung nach ein bisschen darunter, dass die 5 Darstellungsformate in einem Control hineingezwungen sind, wo die verschiedene Darstellungen doch leicht unterschiedliche Daten brauchen.

Fazit: gut, zu überlegen ob es nicht besser wäre, das Control auf 5 Controls aufzuteilen.

Outlook Controls:
OutlookShortcutBar
Das OutlookShortcutBar macht genau was der Name verspricht: es stellt einen Bereich mit Shortcuts dar, so wie man es aus Outlook oder Microsoft CRM kennt. Die Webseite verspricht gute Unterstützung des Visual Studio Designers, und das stimmt auch wirklich: bei diesem Control funktioniert der Designer genau wie der normale Windows Forms Designer. Kleiner kritikpunkt: wieso heißt das Event, das beim klicken auf einem Shortcut ausgelöst wird, "ShortcutEntered"? Ich wäre glücklicher mit z.B. "ShortcutClicked".

Fazit: ein gutes Control, und die sehr ausgereiften Designer Unterstützung begeistert mich einfach. Ein solches Niveau ist leider bei vielen Control-Anbietern weit zu suchen, aber hier ist es gelungen!

OutlookMonthCalendar
Der OutlookMonthCalendar stellt eine Monatsübersicht dar, so wie es sie auch im Pocket Outlook gibt. Dabei kann der Entwickler festlegen, wie viele Monate neben und unter einander angezeigt werden sollen. Bei eine Dimension von 3 bei 4 ergibt sich dann einen Jahreskalender. Ein Tag aus dem Kalender wird über einen Typ namens DayCell bereitgestellt, und da können Vorder- und Hintergrundfarben, Bild (z.B. Dreieck oder Quadrat) und Schriftart festgelegt werden. Auch dem gesamten Control kann eine Hintergrundfarbe oder einen Farbverlauf gegeben werden.

Fazit: Auch dieses Control ist ein robustes Element aus der Resco Bibliothek. Am Anfang habe ich einige zeit gesucht, wie ich das Control von "Monat" auf "Jahr" umstellen konnte, bis ich dann herausgefunden habe, dass dieses Control beliebig viele Monate anzeigen kann - also nicht nur entweder Monat oder Jahr, sondern z.B. auch Quartalsweise, oder so viele Monate wie man will.

OutlookWeekCalendar
Der OutlookWeekCalendar stellt eine Tagesübersicht (der Name des Controls ist also ein wenig irreführend) dar. Das ganze schaut Pocket Outlook sehr ähnlich, inklusive ein Pfeil nach oben oder unten der automatisch aufscheint wenn ein Termin gerade nicht im sichtbaren Bereich ist. Der Entwickler kann angeben wie viele Tage angezeigt werden sollen. Mit 7 Tage ergibt sich dann eine Wochenübersicht, dem das Control seinen Namen verdankt.

Fazit: Das Gute ist, dass das Control ohne viel Konfigurieren aussieht und sich benimmt wie Pocket Outlook. Aus Entwicklersicht ist es allerdings ein wenig merkwürdig, dass die Termine immer wieder bei der Verarbeitung des ResolveAppointments Events eingefügt werden müssen. Da hätte ich lieber eine einfache "Appointments" Liste.

OutlookDateTimePicker
Das OutlookDateTimePicker ist zwei Controls in einem: einerseits ist es ein DateTimePicker Control und andererseits (mit Style = WeekDayPicker) ist es eine leiste die es ermöglicht einen Wochentag zu wählen, wie der Pocket Outlook Kalender oberhalb vom Tages- oder Wochen-Übersicht anzeigt. Im DateTimePicker Modus überbietet das Control die von Microsoft für das .NET Compact Framework entwickelte Version mit erweiterten Konfigurationsmöglichkeiten für die visuelle Gestaltung.

Fazit: die kleine, feine Ergänzung die die Outlook Controls komplett macht.

Daten Controls:
AdvancedTree
Das AdvancedTree Control ist ein besseres TreeView Control. Im Gegensatz zum "normalen" TreeView, bietet AdvancedTree die Möglichkeit, für unterschiedliche Objekte unterschiedliche Darstellungen zu verwenden: z.B. für Kunden eine zweizeilige Ansicht mit Farbverlauf. Der Editor für diese Ansichten ist ein bisschen gewöhnungsbedürftig, aber so bald man den Dreh heraus hat, erzielt man tolle Ergebnisse.

Fazit: die Einarbeitungszeit war ein bisschen länger als bei den einfacheren Controls, aber dafür bekommt man ein mächtiges und gelungenes TreeView Control.

AdvancedList
Das AdvancedList Control ist ein besseres ListBox Control. Die Flexibilität dieses Controls erinnert aber viel mehr an das ListBox Control von Windows Presentation Foundation oder das ListView Control von ASP.NET als an die Windows Forms Variante. Der XML Template Editor für die verschiedene Ansichten ist auch einigermaßen gewöhnungsbedürftig, dafür können die Ansichten zu Laufzeit ausgetauscht werden - z.B. einzeilig, mehrzeilig, QVGA oder VGA, Portrait oder Landscape …

Fazit: Wenn man sich an den XML Template Editor gewöhnt hat, hat man ein ungemein mächtiges Listencontrol, und kann man getrost auf das ListBox Control von Microsoft verzichten.

SmartGrid
Auch wenn ich die Phrase "Das x Control ist ein besseres y Control" schon ziemlich strapaziert habe: das SmartGrid Control ist ein besseres DataGrid Control. Ein besseres DataGrid Control ist dringend notwendig: viele Line-Of-Business Anwendungen stellen Daten in tabellarischen Form da, aber das von Microsoft gelieferte DataGrid Control wird eher keine Preisen gewinnen. Also "Resco to the Rescue", wenn Sie mir das Englischsprachige Wortspiel verzeihen.
Das SmartGrid Control hat sehr viele Möglichkeiten, was man schon alleine an der Zahl der Beispielprogramme sieht: 15 Stück! Da wird man als Reviewer natürlich leicht panisch, denn wie soll man in einen vernünftigen Zeitraum alle diese Möglichkeiten beurteilen? Aber zum Glück beschränken die Beispiele sich auf eine Funktionalität und sind somit leicht verständlich.

Fazit: ein mächtiges, gutes und notwendiges Control.


DetailVie

Wo ein Master-Control ist, wie z.B. AdvancedList oder SmartGrid, dort muss auch ein Details-Control sein (or as they say in English: "Always two, there are: A Master, and an Apprentice a Details view"). Das DetailView Control erfüllt genau diese Aufgabe. Auch hier kommt der XML Template Editor mit den bereits erwähnten Vor- und Nachteile zum Einsatz.

Fazit: Detail-Ansichten entwickeln wird mit dem DetailView um ein vielfaches einfacher. Die Möglichkeit, das Formular auf mehreren Seiten zu unterteilen, und dabei die Eingabefelder mittels "Move Up" and "Move Down" zu verschieben (statt Ausschneiden-Einfügen) ist einfach Spitze.

Preis:

Ab 499.95 USD direkt bei Resco

Fazit:

Resco MobileForms Toolkit ist ein umfangreiche Control-Bibliothek, und ein Review wie dieses kann naturgemäß nur "die Oberflache ankratzen". Trotzdem habe ich in diesem Review versucht, einen Eindruck von Resco MobileForms Toolkit zu ermitteln, sowohl was die Funktionalität als auch die Entwickler-Freundlichkeit angeht. Ich bin von beiden Aspekten begeistert: die Funktionalität geht weiter über dem heraus, was das .NET Compact Framework anbietet oder mit vertretbaren Aufwand ermöglicht. Auch wenn die APIs hier oder da nicht ganz meinen Vorstellungen entspricht, kann man als Entwickler produktiv mit den Resco Controls arbeiten.
Es gibt viele Beispielen, das ist gut - es ist ein bisschen schade, dass bei vielen dieser Beispiele die Referenzen auf den Resco Assemblies ausgebessert werden müssen. Die Tutorials auf der Webseite sind auch sehr hilfreich. Mit der Kombination aus Beispiele und Tutorials kommt man schon sehr weit. Ich mag es nicht, Aussagen zu tätigen wie "Dieses oder jenes Program muss man unbedingt haben", denn es gibt bestimmt Situation, wo das Program nichts bringt oder sogar schadet. Darum formuliere ich meine Conclusio anders: Wer ernsthaft Windows Mobile Anwendungen entwickeln will, wäre gut beraten, Resco's MobileForms Toolkit in Detail zu evaluieren, denn die gebotene Funktionalität ist viel reicher als die von den normalen Controls von Microsoft.

Letzte News

@WorldofPPC

Highlights in Reviews

Cookies helfen uns bei der Bereitstellung unserer Dienste. Durch die Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies setzen.