Silverswitch 1.0 Entwicklerhandbuch

Werbung
Die umfassende Software –
Entwicklungsumgebung zur
Migration von Visual FoxPro
Anwendungen nach Silverlight!
Silverswitch 1.0
Entwicklerhandbuch
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Copyright
Silverswitch ist ein Produkt der ISYS GmbH. Jede Vervielfältigung von Silverswitch-bezogenem Material ist
nur nach schriftlicher Genehmigung durch die ISYS GmbH gestattet und in allen SilverswitchVeröffentlichungen muss die ISYS GmbH als Urheber von Silverswitch ausdrücklich erwähnt werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Inhaltsverzeichnis
Copyright ................................................................................................................................................................ 2
Inhaltsverzeichnis.................................................................................................................................................... 3
Einleitung ................................................................................................................................................................ 5
Entwicklungswerkzeuge ......................................................................................................................................... 6
Visual FoxPro 9 und Visual Extend 13 ............................................................................................................... 6
Visual Studio 2010 .............................................................................................................................................. 6
Silverlight 4 Tools ............................................................................................................................................... 6
Silverlight 4 Toolkit ............................................................................................................................................ 6
Programmiersprachen ......................................................................................................................................... 6
Installation............................................................................................................................................................... 7
Startseite .............................................................................................................................................................. 8
Anlegen eines neuen Projekts ................................................................................................................................. 9
VFX – Silverlight Wizard ..................................................................................................................................... 10
Was macht dieser Assistent? ............................................................................................................................. 10
Auswahl der Silverlight Projektmappe.............................................................................................................. 10
Datenzugriff ...................................................................................................................................................... 11
Auswahl von Formularen .................................................................................................................................. 11
Auswahl der Projekte für Formulare ................................................................................................................. 13
Auswahl von Formulareigenschaften ................................................................................................................ 13
Auswahl von Berichten ..................................................................................................................................... 14
Start der Silverswitch-Anwendung ....................................................................................................................... 15
Weiterbearbeitung ................................................................................................................................................. 16
Architektur ............................................................................................................................................................ 17
Serverprojekte ................................................................................................................................................... 20
Clientprojekte .................................................................................................................................................... 20
Klassenhierarchie .............................................................................................................................................. 20
Anwendungsobjekt................................................................................................................................................ 21
Eigenschaften .................................................................................................................................................... 21
Formulare .............................................................................................................................................................. 24
Eigenschaften .................................................................................................................................................... 24
Geladenen Daten Betragsgrenze. ...................................................................................................................... 24
Ausführung von VFP Code mit GUINEU ............................................................................................................ 26
Action Button ........................................................................................................................................................ 32
Parameterstruktur und Übergabe von Parameter ................................................................................................... 33
Lokalisierung ........................................................................................................................................................ 35
Lokalisierung von Formularen .......................................................................................................................... 36
MessageBox Lokalisierung ............................................................................................................................... 36
Pflichtfelder ........................................................................................................................................................... 38
Anwendungsstart ................................................................................................................................................... 26
Client und Datenbank .................................................................................. Fehler! Textmarke nicht definiert.
Benutzeranmeldung........................................................................................................................................... 26
Login Verhalten – NoLogin .......................................................................................................................... 26
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Login Verhalten – LoginAtStartup ............................................................................................................... 27
Login Verhalten – OptionalLogin ................................................................................................................. 29
Verwendung von Bilddateien ................................................................................................................................ 40
Optimierung des Datenzugriffs ............................................................................................................................. 41
Weitere Informationen .......................................................................................................................................... 42
Forum, Newsgroup ............................................................................................................................................ 42
Technische Dokumentation ......................................................................... Fehler! Textmarke nicht definiert.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Einleitung
Silverswitch ist die umfassende Entwicklungsumgebung für die Entwicklung von Geschäftsanwendungen mit
Microsoft Silverlight.
In Zusammenhang mit Visual Extend für VFP wird dem VFP Entwickler die einfache Möglichkeit gegeben,
bestehende VFX für VFP Projekte nach Silverswitch zu migrieren. Die migrierten Projekte sind in der
Bedienung ähnlich zu den vorhandenen VFX für VFP Anwendungen. VFP Entwicklern eröffnen sich damit
völlig neue Perspektiven.
Die migrierten Silverlight Anwendungen sind Internetanwendungen und laufen mit VFP Datenbanken und SQL
Server Datenbanken, auch wenn die bisherige VFX für VFP Anwendung nicht mit SQL Server Datenbank
ausgeführt werden konnte.
Silverlight Anwendungen laufen auf Windows und Mac OS. Es ist zu erwarten, dass künftig eine größere Anzahl
von Plattformen Silverlight unterstützen werden.
In Silverswitch Anwendungen ist die Ausführung von VFP Code auf der Clientseite und auf der Serverseite
möglich.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Entwicklungswerkzeuge
Zur Verwendung von Silverswitch sind einige Entwicklungswerkzeuge erforderlich.
Visual FoxPro 9 und Visual Extend 13
Die Migration von bestehenden VFP Projekten wird mit dem VFX – Silverlight Wizard durchgeführt. Um diesen
Assistenten ausführen zu können, sind Installationen von VFP 9 und von VFX 13 erforderlich. Der VFX –
Silverlight Wizard ist nur in der Vollversion von VFX 13 enthalten, nicht jedoch in der Trial Version.
Die Trial Version von VFX 13 kann von der Visual Extend Webseite heruntergeladen werden:
http://www.visualextend.de/
Visual Studio 2010
Silverswitch Anwendungen werden mit Visual Studio 2010 und Silverlight 4 entwickelt.
Zur Entwicklung von Silverswitch-Projekten kann eine beliebige Version von Visual Studio 2010 verwendet
werden, Es kann die kostenlos erhältliche Version „Visual Web Developer 2010 Express“ verwendet werden. In
diesem Handbuch wird davon ausgegangen, dass Visual Web Developer 2010 Express verwendet wird. Als
Bezeichnung wird allgemein „Visual Studio“ verwendet. Andere Versionen von Visual Studio haben erweiterte
Möglichkeiten, die für die Entwicklung von Silverswitch-Anwendungen jedoch nicht erforderlich sind.
Visual Web Developer 2010 Express kann von der Microsoft Webseite heruntergeladen werden:
http://www.microsoft.com/express/Downloads/
Silverlight 4 Tools
Nach der Installation von Visual Studio müssen die Silverlight 4 Tools installiert werden. Silverlight 4 Tools
können von der Microsoft Silverlight Webseite heruntergeladen werden:
http://www.silverlight.net/getstarted/
Silverlight 4 Toolkit
Der Silverlight 4 Toolkit kann von der Codeplex Webseite heruntergeladen werden:
http://silverlight.codeplex.com/
Im Silverlight 4 Toolkit sind Steuerelemente enthalten, die die auf den Silverlight 4 Basisklassen basieren und
eine erweiterte Funktionalität bieten.
Programmiersprachen
Die Entwicklung von Silverswitch-Anwendungen erfolgt mit der Programmiersprache C#. Durch die
Verwendung von GUINEU ist auch die Programmierung mit VFP möglich. Außerdem kann VFP Code in COM
Servern ausgeführt werden.
Die Benutzeroberfläche von Silverlight Anwendungen wird mit der Sprache XAML beschrieben.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Installation
Silverswitch ist eine Erweiterung von Visual Studio und wird mit einem Windows MSI Installer installiert. Das
Installationsprogramm hat den Namen Silverswitch.msi. Silverswitch kann aus dem Menü von VFX für VFP
über den Menüpunkt „Update“, „Get Silverswitch“ heruntergeladen werden.
Alle Instanzen von Visual Studio sollten während der Installation geschlossen werden.
Das Installationsprogramm erkennt alle installierten Versionen von Visual Studio.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Nach erfolgreicher Installation erscheint im Dialog „Neues Projekt“ von Visual Studio unter C# die Vorlage
„Silverswitch“. Basierend auf diesem Vorlageprojekt werden neue Silverswitch-Anwendungen erstellt.
Die Deinstallation von Silverswitch muss über die Systemsteuerung erfolgen.
Startseite
Silverswitch enthält eine Startseite für Visual Studio. Die Silverswitch Startseite wird vom
Installationsprogramm als Standard-Startseite eingestellt. Im Dialog Extras, Optionen von Visual Studio kann
die Startseite gewechselt werden.
Auf der Startseite von Silverswitch stehen die gleichen Optionen zur Verwaltung von Projekten wie auf der
Startseite von Visual Studio zur Verfügung. Es können neue Projekte angelegt und bestehende Projekte geöffnet
werden. Am linken Rand befindet sich eine Liste mit zuletzt verwendeten Projekten.
Zusätzlich stehen auf der Silverswitch-Startseite acht Seiten mit Informationen zur Verfügung. Die erste Seite
wird beim Start angezeigt und zeigt insbesondere die Versionsnummer von Silverswitch. Die Informationen auf
den weiteren Seiten werden nur angezeigt, wenn eine Internetverbindung vorhanden ist.
Auf der zweiten und dritten Seite werden die letzten 50 Nachrichten aus dem deutschsprachigen und dem
englischsprachigen Forum angezeigt. Es folgt die Portalseite der dFPUG. Aus dem Portal können zahlreiche
Dateien heruntergeladen werden. Die nächste Seite zeigt die aktuelle Webseite von Visual Extend. Es folgt eine
Seite mit Links rund um Visual Extend. Es gibt auch eine Seite zeigt die zeigt Rangliste der aktivsten Schreiber
im Forum. Schließlich wird eine sehr wichtige Seite diskutiert - Menü Projekt. Seine Funktionalität erfordert
eine besondere Aufmerksamkeit. Wenn Sie im Menü den Tab Projektmenu wählen, führt das zur Seite, die unten
dargestellt ist. Es gibt zwei Sub-Tabs - einer für die Aktualisierung des Projekts und einer - für Builders. Ein
Klick auf dem Button Upgrade Project prüft die aktuelle Version von Silverswitch.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Anlegen eines neuen Projekts
Um ein neues Projekt, basierend auf Silverswitch zu erstellen, wird in Visual Studio der Dialog „Neues Projekt“
über die Startseite, den Menüpunkt „Datei“, „Neues Projekt…“ oder mit einem Klick auf die Schaltfläche
„Neues Projekt“ in der Symbolleiste geöffnet.
In diesem Dialog wird „Silverswitch“ unter „Visual C#“ „Silverswitch“ ausgewählt. Im mittleren Teil des
Dialogs wird dann das Vorlageprojekt „Silverswitch“ ausgewählt.
Der Projektname sowie Ordnernamen und Formularnamen müssen gültige Klassennamen sein, dürfen also
weder Leerzeichen noch Sonderzeichen enthalten.
Das neue Projekt sollte den Namen der zu migrierenden VFX Anwendung erhalten. Außerdem ist ein Ordner
anzugeben, in dem das neue Projekt gespeichert werden soll. Dieser Ordner ist später im VFX – Silverlight
Wizard anzugeben.
Das Projekt enthält einen mit VFP erstellten COM Server. Das Projekt ist zur weiteren Bearbeitung mit dem
VFX – Silverlight Wizard vorgesehen. Die direkte Ausführung ist nicht vorgesehen, jedoch möglich, wenn der
VFP COM Server registriert ist.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
VFX – Silverlight Wizard
Der nächste Entwicklungsschritt ist die Migration einer vorhandenen VFX für VFP Anwendung nach
Silverswitch. Das zu migrierende Projekt muss mit VFP geöffnet werden.
Wenn die Silverswitch Projektmappe in Visual Studio während der Ausführung des VFX – Silverlight Wizard
geöffnet bleiben soll, müssen in Visual Studio alle Dateien gespeichert werden, bevor der VFX – Silverlight
Wizard gestartet wird.
In Visual Extend für VFP ist der VFX – Silverlight Wizard integriert und kann über den Menüpunkt „VFX
13.0“, „Projekt“, „Silverlight Wizard“ gestartet werden. Dieser Assistent ermöglicht die Migration von
Formularen und Berichten in ein Silverswitch Projekt.
Der Assistent erstellt und registriert einen VFP COM Server. Auf Windows Vista und neueren Windows
Versionen muss VFP 9 explizit mit Administratorrechten ausgeführt werden, damit dieser Assistent erfolgreich
ausgeführt werden kann.
Die migrierte Silverswitch Anwendung greift in der Entwicklungsumgebung auf die gleiche Datenbank zu, wie
die VFX für VFP Anwendung. Jede Tabelle der Datenbank muss über einen Primärschlüssel verfügen.
Was macht dieser Assistent?
Im ersten Schritt wird die Funktionsweise des Assistenten erläutert. Der Assistent migriert das aktive VFX
Projekt in eine Silverlight Projektmappe. Es muss eine vorbereitete Silverswitch Projektmappe vorhanden sein,
um diesen Assistenten ausführen zu können. In den folgenden Schritten des Assistenten kann ausgewählt
werden, welche Formulare, Eigenschaften und Berichte migriert werden sollen.
Der Assistent verändert nicht das VFP Projekt.
Auswahl der Silverlight Projektmappe
In diesem Schritt wird eine zuvor vorbereitete Silverswitch Projektmappe ausgewählt.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Die vom VFX – Silverlight Wizard erstellten Formulare und Berichte werden der hier ausgewählten
Projektmappe hinzugefügt.
Datenzugriff
In diesem Schritt werden der Silverswitch Projektmappe Komponenten für den Datenzugriff hinzugefügt.
Wenn mit einer SQL Server Datenbank gerbeitet wird, erfolgt der Datenzugriff der Silverswitch-Anwendung
über ein ADO.NET Entity Data Model und einen Domain Service. Beide Komponenten werden vom Assistenten
generiert. Die Generierung eines ADO.NET Entity Data Model und eines Domain Service ist bei wiederholter
Anwendung des Assistenten auf dem gleichen Projekt nur dann erforderlich, wenn zwischenzeitlich Änderungen
an der Datenstruktur vorgenommen wurden. Bei der ersten Anwendung des Assistenten auf einem VFX für
Projekt müssen ADO.NET Entity Data Model und Domain Service auf jedem Fall generiert werden.
Bei der ersten Anwendung des Assistenten muss ein VFP COM Server erstellt werden. Über den COM Server
kann der Zugriff auf Datenbanken erfolgen. Wenn VFP Datenbanken verwendet werden sollen, muss der
Datenzugriff über den COM Server erfolgen. Im COM Server kann außerdem mit VFP erstellte Geschäftslogik
abgelegt werden.
Der VFX – Silverlight Wizard öffnet die Datei Config.vfx im Ordner des VFX Projekts. Wenn diese Datei
gefunden wird, erstellt der Assistent eine weitere Datei Config.vfx im Ordner VFPComDomainService des
COM Servers im Silverswitch Projekt. In dieser Datei Config.vfx werden alle Pfadnamen durch vollständige
Pfadnamen ersetzt. Diese Datei wird für den Datenzugriff des COM Servers verwendet. Wenn sich im Ordner
des VFX Projekts keine Datei Config.vfx befindet, wird eine neue Config.vfx erstellt.
Der VFX – Silverlight Wizard sucht nach Einträgen zu SQL Server Datenbanken in der Datei Config.vfx. Wenn
solche Einträge gefunden werden, werden die Verbindungszeichenfolgen in der Datei Web.config des
Silverswitch Projekts gespeichert.
Einstellungen des Anwendungsobjekts
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Auswahl von Formularen
In diesem Schritt erscheint eine Liste mit Formularen, die im VFX für VFP Projekt enthalten sind.
Standardmäßig wird vorgeschlagen die Formulare nach Silverlight zu migrieren, die in das Projekt
eingeschlossen sind. VFX Formulare, wie zum Beispiel die Benutzerverwaltung, werden nicht nach Silverlight
migriert, weil diese Formulare bereits im Vorlageprojekt von Silverswitch enthalten sind.
Falls in der Datenumgebung eines Formulars eine Datenquelle verwendet wird, die nicht über einen
Primärschlüssel verfügt, erscheint im Protokoll des Assistenten eine Warnung. Das Formular kann nach
Silverlight migriert werden. Das migrierte Formular kann ausgeführt werden, jedoch ist die Bearbeitung von
Daten nicht möglich, solange der Datenquelle kein Primärschlüssel hinzugefügt wird.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Eingabe der Projektnamen für Formulare
In diesem Schritt werden die Namen der Projekte angegeben, denen die Silverlight Formulare hinzugefügt
werden sollen. Standardmäßig werden alle Silverlight Formulare dem Projekt <Projektname>Forms hinzugefügt.
Es ist möglich eigene Projektnamen einzutragen. Es können mehrere oder alle Formulare einem Projekt
hinzugefügt werden. Es kann aber auch für jedes Formular ein eigenes Projekt erstellt werden.
Bei der Erstellung der Silverlight Client-Anwendung wird aus jedem Projekt eine XAP-Datei generiert, die zur
Laufzeit an den Client im Internet übertragen werden muss. Durch die Aufteilung in mehrere Projekte kann die
Größe der XAP Dateien verkleinert werden. Die Ladezeit wird so verringert.
Formulare können beliebig in Projekte gruppiert werden. Es mag sinnvoll sein, umfangreiche Formulare in
eigene Projekte zu platzieren. Mehrere kleine Formulare können in einem Projekt zusammengefasst werden.
Mit einem Klick auf die Option „Create separate project for each form“ wird für jedes Formular ein Projektname
generiert.
Auswahl von Formulareigenschaften
Standardmäßig werden Silverlight Formulare mit einem Layout generiert, dass weitgehend dem Layout des VFP
Formulars entspricht. Zu diesem Zweck werden alle möglichen Layouteigenschaften nach Silverlight migriert.
Wenn der Anwender die Möglichkeit erhalten soll Styles zu verwenden, sollten nicht alle Layouteigenschaften
nach Silverlight migriert werden. Alle Eigenschaften, die hard-codiert in Silverlight Formularen enthalten sind,
können zur Laufzeit nicht durch die Anwendung von Styles geändert werden.
Durch die Option „Create layout based on Silverlight Grid“ wird die Position von Steuerelementen nicht nach
Silverlight migriert. Vielmehr werden die Steuerelemente im Silverlight-Formular in einem Silverlight Grid
angeordnet. Ein Silverlight Grid ist vergleichbar mit einer Tabelle. In dieser Tabelle werden typischerweise in
einer Spalte Bezeichnungen und in der nächsten Spalte Textboxen und andere Steuerelemente zur Dateneingabe
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
platziert. Der Vorteil dieser Art der Darstellung ist, dass Formulare gut skalierbar sind. Formulare lassen sich so
zum Beispiel auch auf Mobilgeräten mit sehr kleinen Bildschirmen gut anzeigen.
Auswahl von Berichten
In diesem Schritt werden alle im VFX für VFP Projekt enthaltenen Berichtsdateien angezeigt. Standardmäßig
werden alle Berichte zu Silverlight Berichten migriert, ausgenommen VFX Berichte, wie zum Beispiel die
Vorlagedateien für Grid-Berichte.
Damit VFP Berichte nach Silverlight migriert werden können, dürfen diese nicht über Cursor in der
Datenumgebung verfügen. Berichte müssen auf den Datenquellen basieren, die das aufrufende Formular
bereitstellt.
Wenn die Projektmappe in Visual Studio geöffnet ist, während der VFX – Silverlight Wizard ausgeführt wird,
erscheint in Visual Studio die Frage, ob die Projektmappe neu geladen werden soll, weil eine andere Anwendung
Änderungen an der Projektmappe vorgenommen hat. In diesem Fall muss die Projektmappe neu geladen werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Start der Silverswitch-Anwendung
Die migrierte Silverswitch Anwendung kann in der Entwicklungsumgebung von Visual Studio durch einen Klick
auf den grünen Pfeil in der Symbolleiste oder mit der Funktionstaste F5 ausgeführt werden.
Die Anwendung startet mit einem Begrüßungsbildschirm. Wenn die Anwendung zur Verwendung von mehr als
einer Datenbank konfiguriert ist, erscheint der Mandantenauswahldialog.
Anschließend erscheint der Anmeldedialog. Nach der erfolgreichen Benutzeranmeldung läuft die Anmeldung.
Im oberen Bereich erscheint eine Symbolleiste und im linken Bereich erscheint der Öffnen-Dialog.
Die weitere Bedienung ist ähnlich zu Office Anwendungen, bzw. zu VFX für VFP Anwendungen.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Weiterbearbeitung mit Visual Studio
Die Silverswitch Anwendung kann in Visual Studio weiterbearbeitet werden. Es ist aber auch möglich in der
VFX für VFP Anwendung Änderungen an Formularen vorzunehmen und diese Formulare anschließend mit dem
VFX – Silverlight Wizard erneut zu migrieren.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Silverswitch Assistenten und Generatoren
Die Assistenten und Generatoren von Silverswitch sind über die Startseite von der Seite Project menu erreichbar.
Update Project
Mit einem Klick auf Update Project wird die Version des geöffneten Silverswitch Projekt geprüft.
Wenn die installierte Version von Silverswitch neuer ist, als die Version, mit der das Projekt erstellt wurde, wird
eine Messagebox angezeigt.
Nach Zustimmung wird die Aktualisierung gestartet.
Von der zweiten Seite der Projekt-Menüseite können Assistenten für verschiedene Steuerelemente gestartet
werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
VfxPickField Builder
Um den Assistenten für ein bestimmtes Steuerelement zu starten, muss bereits ein Formular im Designer
geöffnet sein. In dem Formular muss das Steuerelement ausgewählt sein, für das der Assistent gestartet werden
soll.
In diesem Fall ist das ausgewählte Steuerelement ein VfxPickField. Von der Startseite kann jetzt der
Silverswitch - PickField-Builder gestartet werden.
Im Assistenten können die Eigenschaften des Steuerelements geändert werden und die Änderungen können
durch einen Klick auf OK gespeichert werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
DataGrid Builder
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Architektur
Silverlight Internet-Anwendungen bestehen aus mindestens zwei Projekten: einem Serverprojekt und einem
Clientprojekt. Das Serverprojekt wird auf dem Server ausgeführt und enthält den Datenzugriff und
Geschäftslogik.
Das Clientprojekt ist das eigentliche Silverlight-Projekt und wird auf dem Client-Rechner ausgeführt. Aus
Optimierungsgründen ist das Clientprojekt in viele, kleine Teilprojekte aufgeteilt.
Serverprojekte
Silverswitch Anwendungen haben zwei Serverprojekte.
Das Startprojekt der Projektmappe hat den Namen Silverswitch.Web. Das Startprojekt wird auf dem Internet
Server vom Internet Information Server ausgeführt. Dieses Projekt enthält die Startseite default.htm.
Die Internetadresse der Startseite wird vom Internetbenutzer in der Adresszeile des Browsers eingegeben, um
die Anwendung zu starten. Die Startseite default.htm prüft, ob im Browser das Silverlight Plug-In installiert ist
und lädt die Silverlight Startanwendung auf der Clientseite.
Das zweite Serverprojekt hat den Namen VfxDataLayer.Web. Dieses Projekt enthält die Datenmodell, über die
der Datenzugriff erfolgt sowie die Domain Services, mit denen der Datenaustausch zwischen Clientprojekten
und Serverprojekten erfolgt.
Der Datenzugriff erfolgt in Silverswitch Anwendungen mit ADO.NET Entity Data Modellen. Diese Modelle
können mit Visual Studio erstellt werden, wenn für die zu verwendende Datenbank ein ADO.NET Entity Data
Model-Treiber zur Verfügung steht. Für Microsoft SQL Server wird so ein Treiber mit Visual Studio installiert.
Bei der Migration von VFX für VFP Projekten wird ein ADO.NET Entity Data Model für den Zugriff auf VFP
Datenbanken vom VFX – Silverlight Wizard erstellt. Der Zugriff auf die Datenbank erfolgt hierbei mit einem
VFP COM Server, der ebenfalls vom VFX – Silverlight Wizard generiert wird. Ein ADO.NET Entity Data
Model-Treiber für VFP Datenbanken ist daher nicht erforderlich.
Ein Domain Service kann mit dem Assistenten von Visual Studio generiert werden. Bei der Migration einer VFX
für VFP Anwendung wird ein Domain Service vom VFX – Silverlight Wizard erstellt.
Clientprojekte
In einer Silverlight Anwendung wird ein Silverlight Projekt zu einer Datei mit der Namenserweiterung .xap
kompiliert. Genauer gesagt, werden die DLLs, die das Kompilat enthalten, in eine Archivdatei verpackt. Diese
Archivdatei enthält die Namenserweiterung .xap. XAP-Dateien können mit dem Windows-Explorer in ZIP
Dateien umbenannt werden und man kann so die enthaltenen DLL-Dateien sehen.
Beim Laden einer Silverlight Anwendung über das Internet wird eine XAP-Datei wird der Serverseite an den
Client übertragen und dort vom Silverlight Plug-In ausgeführt.
Um die Wartezeit beim Laden einer Silverlight Anwendung zu verkürzen, sollte eine XAP-Datei klein sein.
Silverswitch wird dem durch ein Modularisierungskonzept gerecht. Beim Start der Anwendung wird
VfxLoader.xap geladen.
Klassenhierarchie
Die in Silverswitch implementierte Klassenhierarchie ist ähnlich zu der Hierarchie, die in VFX für VFP
implementiert wurde. Die Funktionalität von Silverswitch ist in Klassendateien mit dem Namenszusatz “Base”
enthalten. Von diesen Klassendateien gibt es 1:1 Ableitungen in Klassendateien ohne den Namenszusatz “Base”.
Diesen Klassendateien können eigene Erweiterungen hinzugefügt werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Anwendungsobjekt
Das
Anwendungsobjekt
ist
im
Projekt
VfxApplicationBase
in
der
Programmdatei
Controls\VfxAppObjectBase.cs definiert. Eine 1:1 Ableitung, in der individuelle Anpassungen für das jeweilige
Projekt gemacht werden können, befindet sich im Projekt VfxApplication in der Programmdatei
Controls/VfxAppObjectBase.cs.
Das Anwendungsobjekt stellt Eigenschaften und Methoden global zur Verfügung. In den Eigenschaften des
Anwendungsobjekts können Einstellungen gemacht werden, die das Verhalten der Anwendung betreffen.
Eigenschaften
AddUserToCaption – Der Wert dieser Eigenschaft gibt an, ob der Benutzername neben dem Namen der
Anwendung angezeigt wird.
AllowRelogon - Ermöglicht dem Benutzer sich erneut einzuloggen, ohne die Anwendung zu verlassen.
AllowUserCustomization - Wenn der Wert dieser Eigenschaft auf true eingestellt ist, kann der angemeldete
Benutzer in der Anwendung individuelle Einstellungen machen. Wenn kein Benutzer angemeldet ist, können
keine individuellen Einstellungen vorgenommen werden. Wenn der Wert dieser Eigenschaft auf false eingestellt
ist, werden individuelle Einstellungen nicht gespeichert.
ApplicationName - Diese Eigenschaft gibt den Namen der Anwendung an. Der Name wird im Titel des
Browsers angezeigt.
AskToSave – Anzeige einer Messagebox vor einigen Operationen.
AutoEdit - Wenn der Wert dieser Eigenschaft auf true eingestellt ist, werden alle Steuerelements angezeigt. Der
Benutzer kann die Bearbeitung von Daten unmittelbar beginnen. Wenn der Wert dieser Eigenschaft auf false
eingestellt ist, werden alle Steuerelemente disabled angezeigt. Um mit der Bearbeitung zu beginnen, muss der
Benutzer in der Symbolleiste auf die Schaltfläche „bearbeiten“ klicken.
AutoEdit.AllwaysEnabled - Steuerelemente sind standardmäßig auf allen Formularen aktiviert. Der Benutzer
kann den Fokus auf ein Steuerelement setzen und sofort mit der Bearbeitung beginnen. Die erste Änderung des
Benutzers schaltet das Formular automatisch in den Bearbeitungsmodus.
AutoEdit.AlwaysDisabled – Bei dieser Einstellung sind die Steuerelemente auf allen Formularen
standardmäßig deaktiviert. Die Bearbeitung ist nur möglich, nachdem der Benutzer auf das Symbol "Bearbeiten"
in der Symbolleiste geklickt hat.
AutoEdit.UseObjectSettings - Die Einstellungen des aktuellen Formulars werden verwendet.
Century -diese Eigenschaft legt das Format des Jahrhunderts in Datumsfeldern. Wenn diese Eigenschaft false
ist, fehlt das Jahrhundert, im Jahr erscheint in einer zweistelligen Form (JJ). Wenn diese Eigenschaft true ist, ist
das Jahr in vierstellige Form (JJJJ).
CurrentConnectionInfo - globale Eigenschaft für die aktuelle Verbindung. Enthält Informationen über Typ
Client Datenbanknamen und Verfügbarkeit.
CurrentLanguage - globale Eigenschaft für die aktuelle Sprache.
CanConnectToTheServer - gibt an, ob die Verbindung mit dem Server verfügbar ist.
ChildGridCopy – Erlaubt Kopie des ChildGrid-Eintrags. Standardwert ist GlobalSettings.AlwaysDisabled.
DisableFormResize– wenn der Wert dieser Eigenschaft auf True eingestellt ist, kann die Benutzer nicht die
Größe der Formen zur Laufzeit ändern. Wenn false, sind die Formen größenveränderbar zur Laufzeit. Während
das Schließen des Formulars der Benutzer ausgewählten Größe wird in VfxResources gespeichert und wieder
gebraucht das nächste Mal das Formular geöffnet wird.
EditDateFieldName - der Name des Feldes, der das Datum speichert, das ein Datensatz zuletzt geändert wurde.
Wenn ein Feld mit dem angegebenen Namen in einer Tabelle vorhanden ist, wird das Feld bei jedem Speichern
aktualisiert. Der Typ des Feldes kann Date- oder DateTime sein. Wenn der Typ IsDateTime ist wird beim
Speichern ein Timestamp eingefügt.
EditTimeFieldName – der Name des Feldes, der die Zeit speichert, die ein Datensatz zuletzt geändert wurde.
Wenn ein Feld mit dem angegebenen Namen in einer Tabelle vorhanden ist, wird das Feld bei jedem Speichern
aktualisiert. Der Typ des Feldes muss C(8) sein.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
EditUserFieldName - der Name des Feldes in einer Tabelle, der den Namen des letzten Benutzers speichert, der
zuletzt den Datensatz bearbeitet haben. Wenn ein Feld mit dem angegebenen Namen in einer Tabelle vorhanden
ist, wird das Feld bei jedem Speichern aktualisiert. Das Feld muss vom Typ Char Länge 32 sein.
EnforcePasswordHistoryCount – diese Eigenschaft bestimmt, wie viele alte Kennwörter in der Geschichte
gespeichert werden. Kennwörter, die in der Geschichte sind können als ein neues Kennwort nicht zugewiesen
werden. Der Standardwert ist 0.
ErrorDetailLevel – legt fest, wie detailliert das Fehlerprotokoll wird. Das Fehlerprotokoll ist in der Tabelle
VfxLog gespeichert. Es hat drei Ebenen: MessageOnly, CallStackInformation, FullDetailedInformation
HideOpenDialog – Bestimmt ob OpenDialog in der Anwendung sichtbar ist.
HideWhenEmpty - Diese Eigenschaft gibt an, ob Steuerelemente ausgeblendet werden, wenn keine Datensätze
in einer Tabelle gespeichert werden. In diesem Fall erscheint ein Hinweis auf dem Formular. Klickt der Benutzer
auf den Hinweis, wechselt das Formular in den Einfügemodus.
InsertDateFieldName - Enthält den Namen des Feldes, in der das Datum der Schaffung eines Datensatzes
gespeichert wird. Wenn ein Feld mit dem angegebenen Namen in einer Tabelle vorhanden ist, wird das Feld
automatisch während des ersten Speicherns eines Datensatzes ausgefüllt. Der Typ des Feldes kann Date- oder
DateTime sein. Wenn das Feld vom Typ DateTime ist wird beim Speichern ein Zeitstempel eingefügt.
InsertUserFieldName - Der Name eines Felds in einer Tabelle, in der der Name des Benutzers gespeichert, die
den Datensatz erstellt hat. Wenn ein Feld mit dem angegebenen Namen in einer Tabelle ist, wird der Wert
automatisch während der ersten Speichern eines Datensatzes ausgefüllt. Das Feld muss vom Typ Char mit Länge
32 sein.
InsertTimeFieldName - Der Name des Feldes, das die Zeit von einem Eintragserstellung speichert. Wenn ein
Feld mit dem angegebenen Namen in einer Tabelle vorhanden ist, wird der Wert während der ersten speichern
automatisch ausgefüllt. Der Typ des Feldes muss C(8) sein.
KeepUserLog - Keep Login/Logout Protokoll für Benutzer.
LangID – Wenn Runtimelocalization nicht verwendet wird, ist die Abkürzung für die Standardsprache in dieser
Eigenschaft angegeben. Der Standardwert ist Englisch.
LoginBehavior - gibt an, ob ein Benutzer-Login erforderlich beim Start, nicht erforderlich, oder optional ist. Es
bestimmt das Startverhalten von der Anwendung. Login-Behavior wird in einem gesonderten Kapitel detailliert
erklärt.
MainForm - bestimmt die Start-Form der Anwendung. Wenn Benutzer-Login erforderlich ist, wird das
Formular nach dem Login geöffnet.
MaintenanceTimerFileName - wenn die Datei mit dem angegebenen Name im Ordner Maintenance anwesend
ist, beendet die Anwendung.
MaintenanceTimerInterval - Intervall in Sekunden, nach denen die Anwendung überprüft die Anwesenheit der
Wartung - Datei im Ordner Maintenance.
MultiInstance - bestimmt Global, ob Formen mehr als einmal geöffnet werden können.
PasswordHistoryCount - bestimmt die Anzahl eindeutiger neuer Kennwörter, die vor eines alten Kenntwortes
einem Benutzerkonto zugeordnet werden müssen. Wert muss zwischen 0 und 99 liegen.
PasswordLength - gibt die Mindestlänge der Kennwörter. Wenn diese Eigenschaft auf 0 festgelegt ist, ist kein
Kennwort erforderlich.
PasswordStrengthLevel – gibt die Stärke der erforderliche Kennwort. Hat vier Sicherheitsebenen.
PasswordStrengthLevel.Weak – keine Anforderungen;
PasswordStrengthLevel.Medium - das Kennwort muss Zeichen aus mindestens 2 der folgenden vier
Kategorien enthalten:
•
Großbuchstaben Zeichen (A bis Z),
•
Kleinbuchstaben (a bis Z),
•
Ziffern (0 bis 9),
•
Sonderzeichen (z. B.!, $, #, %).
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
PasswordStrengthLevel.Strong – das Kennwort muss Zeichen aus mindestens 3 der oben genannten 4
Kategorien enthalten.
PasswordStrengthLevel.Best – muss das Kennwort Zeichen von allen der oben genannten 4 Kategorien
enthalten.
PasswordValidityDays – festgelegt die Geltungsdauer von Kennwörtern. Wenn ein Kennwort abgelaufen ist,
fordert den Benutzer bei der Anmeldung für die Registrierung eines neuen Kennworts. Login ist nicht
möglichohne ein neues Passwort. Wenn diese Eigenschaft 0 ist, bleiben die Kennwörter auf unbestimmte Zeit
gültig.
PathToApplicationLogo
Pfad
/VfxLoader;component/Icons/Icon128.png
zur
Anwendung
Logo.
Standardwert:
RelogonQuit – bestimmt, ob der Browser geschlossen werden soll, wenn der Benutzer klickt auf das LoginDialogfeld abbrechen.
RequiredFieldInitStyle - dies Eigenschaft legt den Stil der die erforderlichen Felder. Der Standardwert ist
"Erforderlich". Andere benutzerdefinierten Formatvorlagen können implementiert werden.
RequiredFieldFailureStyle - diese Eigenschaft legt den Stil die Pflichtfelder fest, wenn sie leer sind und
speichern initiiert wird. Der Standardwert ist "RequiredInvalidOther benutzerdefinierte Formatvorlagen
implementiert werden können.
RuntimeLocalization wenn der Wert dieser Eigenschaft auf True festgelegt ist, die Anwendungslokalisierung
führt zur Laufzeit. Alle Text angezeigt werden zur Laufzeit von der Vfxmsg-Tabelle gelesen und in der
ausgewählten Sprache angezeigt. Wenn der Wert dieser Eigenschaft auf False festgelegt ist, werden keine Texte
aus Tabelle Vfxmsg zur Laufzeit gelesen.
SaveFormLayoutResolutionDependent - definiert, sollte das Layout des Formulars je nach Auflösung von der
Benutzer gespeichert werden soll.
ShowFilterActivatedInFormCaption - gibt an, ob die Nachricht in Formulartitel angezeigt wird, wenn ein
Filter angewendet wird.
ShowNTLogonFieldInUserManagement - Wenn true wird Ntlogonfield in Benutzerliste angezeigt.
ShowIntroForm – legt fest, ob der Begrüßungsbildschirm angezeigt werden soll.
WorkAliasRecordsLimit – gibt die maximale Anzahl der zu ladenden Datensätze an.
WorkingArea – Arbeitsbereich.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Formulare
Formulare haben Eigenschaften, mit denen das Verhalten des Formulars gesteuert werden kann.
Eigenschaften
Eigenschaften von Formularen sind in der Datei mit der Namenserweiterung .xaml.cs des Formulars angegeben.
AskToSave = true;
Wenn der Wert dieser Eigenschaft auf true gestellt ist, wird der Anwender gefragt ob Änderungen gespeichert
werden sollen, wenn versucht wird das Formular zu schließen und nicht gespeicherte Änderungen vorhanden
sind. Wenn der Wert dieser Eigenschaft auf true gestellt ist, werden Änderungen ohne Rückfrage gespeichert.
AutoEdit = true;
Wenn der Wert dieser Eigenschaft auf true gestellt ist, sind die Steuerelemente eines Formulars enabled. Die
Bearbeitung der Daten kann unmittelbar begonnen werden.
Wenn der Wert dieser Eigenschaft auf false gestellt ist, sind die Steuerelemente eines Formulars disabled. Wenn
der Anwender die Daten bearbeiten will, muss er zunächst auf die Schaltfläche „Bearbeiten“ klicken um das
Formular in den Bearbeitungsmodus umzuschalten. Dabei wird der Status der Steuerelemente auf enabled
gesetzt.
AutoResizeControl = true;
Wenn der Wert dieser Eigenschaft auf true gestellt ist, kann die Größe des Formulars zur Laufzeit vom
Anwender geändert werden.
InitialHeight = 295;
In dieser Eigenschaft wird die Höhe des Formulars angegeben.
InitialWidth = 538;
In dieser Eigenschaft wird die Breite des Formulars angegeben.
MinButton = true;
Wenn der Wert dieser Eigenschaft auf true gestellt ist, wird in der Titelzeile des Formulars eine Schaltfläche
zum Minimieren des Formulars angezeigt.
MultiInstance = true;
Wenn der Wert dieser Eigenschaft auf true gestellt ist, kann das Formular mehrmals gestartet werden.
ReportName = "CustomersTemplate.xaml";
In dieser Eigenschaft kann der Name einer Berichtsvorlage angegeben werden. Wenn der Wert dieser
Eigenschaft leer ist, wird zur Laufzeit ein Bericht basierend auf den Spalten des DataGrid des Formulars
generiert.
Begrenzung der geladenen Datensätze
Zum Mengenbeschränkung des geladenen Datensätze kann die Eigenschaft WorkAlliasRecordsLimit verwendet
werden. Die Einschränkung kann auf die Anwendung Objekt als auch als an die Controller der einzelnen
Formulare angewendet werden. Werte von 1 bis die gewünschte Anzahl der geladenen Datensätze können auf
diese Eigenschaft festgelegt werden. Es gibt auch spezielle Werte. -1 ist auf die Eigenschaft festgelegt, wenn es
keine Verpflichtung für die Beschränkung der Menge gibt. Anders gesagt werden alle Datensätze geladen. Wenn
0 auf die Controller-Eigenschaft festgelegt ist, gilt die Beschränkung des Application-Objekts als Standard.
Wenn 0, auf die-Eigenschaft des Application-Objekts festgelegt ist gilt die gleiche Beschränkung als bei -1(Alle
Datensätze sind geladen). Jede Beschränkung der Controller eines Formulars, überschreibt die Beschränkung des
Application-Objekts. Die folgende Tabelle fasst alle möglichen Zustände:
VfxAppObject.WorkAliasRecordsLimit=
-1
0
Beliebige Anzahl b
>0
Controller.WorkAliasRecordsLimit=
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
-1
Alle Datensätze
wird geladen
Alle Datensätze
wird geladen
Alle Datensätze
wird geladen
0
Alle Datensätze
wird geladen
Alle Datensätze
wird geladen
Anzahl b
Datensätze wird
geladen
Beliebige Anzahl a > 0
Anzahl a
Datensätze wird
geladen
Anzahl a Datensätze
wird geladen
Anzahl a Datensätze
wird geladen
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Benutzeranmeldung und Mandantenauswahl
Die Anwendung kann mit verschiedenen Mandantendatenbanken arbeiten. "Client" ist eine Datenbank mit
spezifischen Struktur und Logik. Es gibt zwei Möglichkeiten Clients festzulegen, die die Anwendung verwenden
können. Die erste Möglichkeit ist mittels der Config.vfx-Datei und COM-Server, die die Anwendung verwendet.
Die zweite Möglichkeit ist einen Client in der Datei web.config einzufügen.
Die Clients, die in eine der genannten Dateien Beschreibung haben, sind durch die Query-Methode
GetAvailableClients in VfxSystemDomainService anerkannt. Diese Methode geben alle aktiven Clients, die die
Anwendung verwenden kann. Die Reihenfolge der Extraktion der Clients ist wichtig. Zuerst werden alle Clients
aus "Web.config" berücksichtigt und danach - alle Clients aus der Config.vfx Datei. GetAvailableClients Gibt
Typ IQeruable <vfxcliententry>.Die Vfxcliententry-Klasse enthält Informationen zum Namen des Clients,
Verbindungen Name (für Business und Vfx-Tabellen), Informationen zur Datenbank und Verfügbarkeit, und
wenn den COM-Server verwendet werden oder nicht.
Wenn keine Clients zur Verfügung stehen, wird die folgende Meldung angezeigt:
Anmeldeverhalten
Silverswitch unterstützt 3 verschiedene Login-Verhalten:
•
Kein Login – Benutzerauthentifizierung erzwungen
•
Optionaler Login – es ist möglich, die Anwendung ohne Benutzerauthentifizierung zu starten, aber es
ist auch möglich, später durch VfxLoginDialog anzumelden.
•
Login am Anfang – Authentifizierung beim Starten der Anwendung.
Ändern Sie den Wert der LoginBehaviorEigenschaft in VfxAppObject um Login Verhalten zu wählen.
Diese Eigenschaft ist vom Typ Enum und hat den Namen LoginBehaviors. Die möglichen Werte sind:
•
LoginBehaviors.NoLogin
•
LoginBehaviors.OptionalLogin –Standardwert für eine neue Anwendung
•
LoginBehaviors.LoginAtStartUp
Eine weitere Eigenschaft im VfxAppObject, die mit dem Login-Verhalten-Objekt zu tun hat, ist RelogonQuit.
Mögliche Werte und die Funktion, die sie veranlassen werden, werden später in diesem Dokument beschrieben.
Anmeldeverhalten– NoLogin
Diese Wert bedeutet, dass die Anwendung keine Benutzerauthentifizierung unterstützt. Beim Anwendungsstart
sollte ClientDialog erscheinen (wenn mehr als ein aktiver Client verfügbar ist). Nachdem der Benutzer eine
Datenbank ausgewählt hat, startet die Anwendung und der Benutzer kann seine Arbeit fortsetzen.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
In diesem Fall ist Relogin-Button nicht verfügbar. Der Benutzer kann keine andere Clients zur Laufzeit
auswählen.
•
Cancel button – Der Dialog wird geschlossen und die Anwendung beendet. Wenn RelogonQuit auf
„true“ festgelegt ist, versucht die Anwendung den Benutzer-Browser zu schließen.
•
OK button –Der Benutzer wählt Client und die Anwendung setzt mit der Eröffnung des VfxMainPage
und VfxOpenDialog fort.
Die nächste Abbildung zeigt das Ablaufdiagramm nach dem die Anwendung funktioniert, wenn LoginBehavior
auf NoLogin festgelegt ist.
Anmeldeverhalten – LoginAtStartup
Der Benutzer muss sich beim Start der Anwendung identifizieren. Der Client Auswahl-Dialog sollte vor dem
Login-Dialogfeld angezeigt werden. Es ist möglich nur das Login-Dialogfeld angezeigt werden, wenn die
Anwendung nur über einen aktiven Client verfügt.
•
Abbrechen – das Dialogfeld wird geschlossen, und die Anwendung wird nicht mehr funktionieren.
Wenn RelogonQuit auf „true“ festgelegt ist, versucht die Anwendung den Benutzer-Browser zu
schließen.
•
OK – die Anwendung wird für gültigen Benutzernamen und Kennwort überprüfen. Wenn
Authentifizierungsdaten gültig sind, wird das Dialogfeld schließen. Die Anwendung setzt mit der
Eröffnung des VfxMainPage und VfxOpenDialog fort.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Die Abbildung zeigt das Ablaufdiagramm der Anwendung, wenn LoginBehavior auf LoginAtStartUp festgelegt
ist.
Mit dieser Einstellung kann der Benutzer wieder in einer anderen Datenbank mit anderen Benutzernamen
einloggen. Dazu muss der Benutzer auf der RelogButton
klicken. Er befindet sich auf der Symbolleiste.
Wenn der Benutzer auf RelogButton klickt, wird der VfxClientDialog angezeigt und nachdem wird dieser
VfxLoginDialog wie beim Startup angezeigt.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Die Abbildung veranschaulicht die Funktionsweise der Anwendung, wenn der Benutzer auf RelogButton in der
Symbolleiste klickt.
Anmeldeverhalten – OptionalLogin
Diese Option ist ein bisschen komplizierter als die vorherigen beiden.
Am Anfang wird die Anwendung mit einem öffentlichen Client gestartet. Der öffentliche Client ist der erste
Client für die Anwendung. Es ist möglich dieser Client nicht verfügbar zu sein und in diesem Fall beendet die
Anwendung.
Das Optionaler Login-Verhalten hat drei Fälle:
Erster Fall: Die Anwendung beginnt mit einem öffentlichen Client und der Benutzer klickt auf RelogButton.
LoginDialog erscheint. Der Benutzer authentifiziert sich an den öffentlichen Client. Nach erfolgreicher
Authentifizierung kann der Benutzer weiterhin mit dem öffentlichen Client funktionieren.
Zweiter Fall: Der Benutzer wird an den öffentlichen Client authentifiziert. Er klickt auf RelogButton und
VfxClientDialog zeigt (wenn mehrere Clients sind). Nach der Client Auswahl wird VfxLoginDialog geöffnet
werden. Der Benutzer authentifiziert sich am ausgewählten Client und setzt seine Arbeit mit diesem Client fort.
Dritter Fall: Der Benutzer hat einen anderen Client als bei den öffentlichen Client ausgewählt und ist schon
authentifiziert (der Fall 2 ist abgeschlossen). Er klickt auf den RelogButton. Der Benutzer kann jetzt anderen
Clientwählen und zu dem er authentifizieren kann.
Bitte beachten Sie, dass der Benutzer auf Abbrechen von VfxLoginDialog oder VfxClientDialog jederzeit
klicken kann. In diesem Fall wählt die Anwendung einen öffentlichen Client und der Benutzer kann weiterhin
seine Arbeit ohne Authentifizierung fortsetzen.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Die Abbildung zeigt das Ablaufdiagramm der Anwendung und RelogButton für LoginBehavior mit dem Wert
OptionalLogin.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Ausführung von VFP Code
In allen Silverlight Client Projekten kann VFP Code mithilfe von GUINEU ausgeführt werden. GUINEU ist eine
Laufzeitumgebung zur Ausführung von mit VFP kompilierten Programmdateien
Die GUINEU Laufzeitumgebung befindet sich in der Datei vfx.guineu.runtime.dll. Diese DLL ist in das Projekt
VfxGuineuRuntime. In diesem Projekt befindet sich außerdem die Klasse VfxGuineu.cs mit deren Hilfe die
Funktionalität von GUINEU verwendet wird.
Der Programmcode muss mit der Entwicklungsumgebung von VFP erstellt werden. Die kompilierte FXP Datei
muss in das jeweilige Silverlight Projekt eingeschlossen werden.
Es ist empfehlenswert auch die PRG Datei dem Silverlight Projekt hinzuzufügen. Durch einen Doppelklick auf
die PRG Datei im Projektmappen-Explorer kann VFP gestartet und die PRG Datei bearbeitet werden.
Um GUINEU in einer C# Klasse verwenden zu können, muss ein Feld vom Typ VfxGuineu hinzugefügt
werden. Der Instanziierung wird als Parameter der Name der kompilierten VFP Programmdatei mitgegeben.
private readonlyVfxGuineu _fox = newVfxGuineu("Orders.FXP");
Der Aufruf von Funktionen in der VFP Programmdatei ist mit einer Zeile C# Code möglich.
<Rückgabewert> = _fox.Do("<Name der Funktion>", <optionale Parameter>, ...);
Die Auswertung des Rückgabewerts ist optional. Es können so viele Parameter übergeben werden, wie als
Parameter von der VFP Funktion akzeptiert werden. Parameter können von beliebigem Typ sein. Es ist auch
möglich Objekte aus der Silverlight Benutzeroberfläche als Parameter zu übergeben. Die Eigenschaften von
Objekten stehen in der VFP Funktion zur Verfügung und können gelesen und geschrieben werden.
privatevoid xpgfPageFramePage1txtShiptoname_GotFocus(objectsender,
System.Windows.RoutedEventArgs e)
{
_fox.Do("ShipToName_GotFocus", txtTooltip);
}
privatevoid xpgfPageFramePage1txtShiptoname_TextChanged(objectsender,
System.Windows.Controls.TextChangedEventArgs e)
{
OnEdit();
_fox.Do("Validate", xpgfPageFramePage1txtShiptoname,
xpgfPageFramePage1edtShiptoaddress, chkSpeichern);
}
privatevoid xpgfPageFramePage1txtOrderdate_LostFocus(objectsender,
System.Windows.RoutedEventArgs e)
{
OnEdit();
varorderDate =
((orders)ViewModel.WorkAliasCollection.CurrentItem).orderdate;
txtDelivery.Text = _fox.Do("Lieferdatum", orderDate);
}
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Action Button
Mithilfe der VfxActionButton können VFP Prozeduren vom COM-Server ausgeführt werden. Der Name der
Prozedur und Parameter werden auf Eigenschaften des VfxActionButton festgelegt. Wie im folgenden Beispiel
können Werte auf diese Eigenschaften in XAML festgelegt werden. Binding kann auch verwendet werden. Das
Ergebnis ist deserialisiert und auf die OperationResult-Eigenschaft des VfxActionButton gesetzt. Es trägt den
Ergebnis der Prozedurausführung sowie Fehlercode und Nachricht, falls vorhanden. Operationen mit dem
Ergebnis können im Handler des OperationResultLoaded-Event ausgeführt werden.
Beispiel:
<VfxControl:VfxActionButton
x:Name="btnAction"
Content="Proper"
ProcedureParmaters="{Binding
Path=Customers.CurrentItem.customername,Mode=OneWay}"
ProcedureName="proper"
OperationResultLoaded="btnAction_OperationResultLoaded />
Und hier ist ein Beispiel für den OperationResultLoaded-Eventhandler in der CS-Datei des gleichen Formulars:
privatevoidbtnAction_OperationResultLoaded(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(btnAction.OperationResult.errormessage))
{
((customers)((CustomersViewModel)ViewModel).Customers.CurrentItem).
customername = btnAction.OperationResult.result;
OnEdit();
}
else
{
thrownewException(btnAction.OperationResult.errormessage);
}
}
Statt der Funktion proper() kann jede andere VFP Funktion verwendet werden.
ProcedureName
Der Eigenschaft ProcedureName wird der Name der Methode des COM Servers zugewiesen. Bei einem Klick
auf den Button wird die hier angegebene Methode ausgeführt.
Es kann sich bei dem hier angegebenen Namen um eine VFP Funktion, wie hier im Beispiel PROPER(), den
Namen einer Methode des COM Servers oder um den Namen einer Programmdatei handeln, die vom COM
Server zur Laufzeit geladen wird.
Der Vorteil in der Verwendung von Programmdateien liegt darin, dass Änderungen im Programmcode gemacht
werden können, ohne dass der COM Server aktualisiert oder neu registriert werden muss. Durch die
Verwendung von externen Programmdateien können auch neue VFP Funktionen aus einer Silverlight
Anwendung genutzt werden, ohne dass der COM Server neu erstellt und neu registriert werden muss.
ProcedureParameters
In dieser Eigenschaft können optionale Parameter der Methode angegeben werden.
OperationResultLoaded
Der Aufruf des COM Servers erfolgt asynchron. In der Eigenschaft OperationResultLoaded wird der Name der
Methode der aktuellen C# Klasse angegeben, die aufgerufen wird, wenn die Ausführung der COM Server
Methode beendet ist.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Parameterstruktur und Übergabe von Parameter
Wenn ein Formular Zugriff auf Daten über COM (VFP-Datenbanken) oder SQL Server braucht, muss es an die
Servicemethoden (clientseitig Queries genannt) Parameter übergeben. Die Parameter sind Instanzen der
VfxQueryParameter-Klasse. Die VfxQueryParameter-Klasse hat Konstruktoren mit 2, 3 oder 4 Parametern die
Werte der folgenden Eigenschaften festlegen:
•
ParameterName
•
Value
•
LogicalOperator
•
TypeName
Betrachten Sie die folgende Deklaration eine VfxQueryParameter Konstruktor:
publicVfxQueryParameter(stringparameterName, string value, stringlogicalOperator,
stringtypeName).
und
publicVfxQueryParameter(stringparameterName, string value)
Das erklärt wie man eine Instanz von VfxQueryParameter erzeugt. Die Instanzen sind zusammen in einer Liste
gestapelt und in einem VfxParameter Manager-Object. VfxParameterManager ist verantwortlich für die
Serialisierung, Parameterauswahl, Zusatz, Änderung und andere Funktionen in Bezug auf Parameter.
Betrachten Sie den folgenden Codeabschnitt aus der ViewModel eines Formulars:
publicclassOrderscaViewModelBase :ViewModel<orders>
{
privateVfxPagedCollectionView _products;
publicOrderscaViewModelBase(IDataFormProperties form)
: base(newVFPizzaSilverlightDomainContext())
{
var parameters = newList<VfxQueryParameter>
{
newVfxQueryParameter("@order", orderid", "", "orders"),
newVfxQueryParameter("@order", "orderid", "",
"orderdetails"),
newVfxQueryParameter("@order", "productid", "",
"products"),
newVfxQueryParameter("customerid", "", "or", "orders"),
newVfxQueryParameter("orderid", "", "or", "orderdetails")
};
ClientParameters = newVfxParametersManager(parameters);
_products =
newVfxPagedCollectionView(Context.EntityContainer.GetEntitySet<products>());
_form = form;
LoadProducts();
}
publicvoidLoadProducts()
{
Context.EntityContainer.GetEntitySet<products>().Clear();
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
string pars =
ClientParameters.GetSerializedParameters<products>();
//only parameters concerning “products” will be taken into account
Context.Load<products>(
((VFPizzaSilverlightDomainContext)Context).GetProductsQuery(pars),
loadOperation =>
{
}, null);
}
Einige spezielle Parameternamen sind @TOP, @ ORDER und @WHERE.
@ TOP wählt die ersten N Einträge. Hier ist ein Beispiel:
newVfxQueryParameter("@TOP", recordsLimit.ToString(), "", tableName)
@ORDER legt Kriterien, durch die die ausgewählten Einträge angeordnet werden.
Beispiel:
newVfxQueryParameter("@ORDER", "orderid", "", "orders")
Hier sind alle Aufträge nach "Orderid" angeordnet. Beachten Sie, dass die TypeName (der letzte Feld) ist von
der Typ "orders" und das bedeutet, dass diese VfxQueryParameter Instanz die Tabelle "orders" befasst. Der
Logical Operator (das dritte Feld) nicht verwendet wird (gekennzeichnet durch leere Zeichenfolge) da es nicht
benötigt wird.
@WHERE legt eine Where-Klausel in das zweite Feld (Value):
newVfxQueryParameter("@WHERE", "orderid > 100", "", "orders")
Die folgenden Operatoren können verwendet werden:(“=”;“<>”;“<”;“>”;”<=”;”>=”;IN;BETWEEN;LIKE)
Die spezielle Parameter @ TOP, @ ORDER, @ WHERE können kombiniert werden, um eine mehr deskriptive
Abfrage zu bilden. Dazu sollten sie in der gleichen Liste sein und dieselbe Tabelle betreffen.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Mehrsprachige Anwendungen
Der VFX – Silverlight Wizard übernimmt die Lokalisierungseinstellungen von der migrierten VFX für VFP
Anwendung.
Lokalisierung zur Laufzeit
Wenn nicht mit Lokalisierung zur Laufzeit gearbeitet wird, werden dennoch alle von VFX verwendeten Texte,
zum Beispiel Bezeichnungen in Dialogen und Tooltips, zur Laufzeit aus der Tabelle vfxmsg gelesen. Im
Gegensatz zu VFX für VFP werden in Silverswitch keine Includedateien mit Konstanten verwendet.
Die Lokalisierungseinstellungen werden mit Eigenschaften des Anwendungsobjekts in der Datei VfxApplication
– Controls\VfxAppObject.cs gemacht.
RuntimeLocalization = true;
Wenn der Wert dieser Eigenschaft auf true gesetzt ist, läuft die Anwendung mit Lokalisierung zur Laufzeit.
LangID = "GER";
Wenn eine Anwendung ohne Lokalisierung zur Laufzeit arbeitet, wird mit dieser Eigenschaft die verwendete
Sprache eingestellt. Wenn der Wert der Eigenschaft RuntimeLocalization auf true gesetzt ist, gibt der Wert
dieser Eigenschaft die Sprache an, mit der die Anwendung gestartet wird.
Der Wert der Eigenschaft LangID enthält die Abkürzung der verwendeten Sprache. Für jede verfügbare Sprache
gibt es eine Spalte in der Tabelle Vfxmsg.
Sprache
Silverswitch
Abkürzung
Albanisch
ALB
Bulgarisch
BUL
Chinesisch
(traditionell)
CHT
Chinesisch
(vereinfacht)
CHS
Deutsch
(Deutschland)
GER
Deutsch (Schweiz)
CHD
Englisch (UK)
ENG
Estnisch
EST
Finnisch
FIN
Französisch
FRE
Griechisch
GRE
Italienisch
ITA
Japanisch
JPN
Niederländisch
NL
Polnisch
PL
Portugiesisch
POR
Rumänisch
RO
Russisch
RU
Slovakisch
SVK
Spanisch
ESP
Tschechisch
CZE
Türkisch
TR
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Es stehen nicht alle Texte in allen Sprachen zur Verfügung.
Wenn mit Lokalisierung zur Laufzeit gearbeitet wird, kann die Liste der verfügbaren Sprachen in der Tabelle
VfxLanguage eingestellt werden. In dieser Tabelle gibt es für jede Sprache einen Datensatz. Wenn in der Spalte
IsActive True steht, steht diese Sprache in der Anwendung zur Verfügung.
Die Auswahl der Sprache kann in einer Combobox im Anmeldedialog oder in einer Combobox in der
Symbolleiste vorgenommen werden. Die eingestellte Sprache wird je Anwender gespeichert und bei der
Benutzeranmeldung nach der Eingabe des Benutzernamens wiederherstellt.
Beim Wechsel der Sprache werden auch die Regionaleinstellungen gesetzt. Dazu gehören Dezimaltrennzeichen,
Datumsformat und andere Einstellungen.
Wenn eine Anwendung ohne Lokalisierung zur Laufzeit arbeitet, sind die Comboboxen zur Auswahl der
Sprache nicht sichtbar.
Lokalisierung von Formularen
Alle Formulare implementieren das Interface IVfxLocalization. Wenn das Formularereignis Loaded ausgeführt
wird, wird die Methode InitializeLocalizationManager(stringlanguage) aufgerufen. Mit dieser Methode wird das
Objekt VfxLocalizationManager instanziiert. Dieses Objekt durchsucht das Formular nach lokalisierbaren
Objekten. Lokalisierbare Objekte verfügen über die Eigenschaft MessageId oder ToolTipMessageID.
Betrachten Sie das folgende Beispiel eine vereinfachte Form mit drei Steuerelementen.
<VfxObject:VfxForm x:Class="VfxClass"
x:Name="frmClass"
MessageID="CAP_FRMUSERLIST"
Caption="User List" >
<VfxObject:VfxGrid x:Name="LayoutRoot">
<VfxObject:VfxTabControl
x:Name="xpgfPageFrame">
<VfxObject:VfxTabItem x:Name="xpgfPageFramePage1"
Header="Edit"
MessageID="CAP_EDIT"
ToolTipMessageID="CAP_EDIT">
<VfxObject:VfxTextBlock
x:Name="xpgfPageFramePage1lblUserAccess"
Text="User Access"
MessageID="CAP_LBLUSERACCESS"/>
<VfxObject:VfxButton
Content="OK"
Name="button1"
Click="button1_Click"
MessageID="CAP_CMDOK"/>
</VfxObject:VfxTabItem>
</VfxObject:VfxTabControl>
</VfxObject:VfxGrid>
</VfxForm:VfxDataForm>
Lokalisierung von MessageBoxen
Um
eine
lokalisierte
MessageBox
zu
zeigen,
VfxStartUpFormBase.ShowVfxMessageBox-Methode aufzurufen.
Silverswitch
muss
Venelina Jordanova, Uwe Habermann
der
Entwickler
die
© 2011 dFPUG c/o ISYS GmbH
Es implementiert die VfxLocalizationManager.GetMessageValue-Methode als auch die VfxMessageBox.Show
Methode um eine lokalisierte Meldungsfeld zu produzieren. Hier wird die Deklaration des ShowVfxMessageBox
präsentiert und jeder seiner Parameter kurz erklärt.
public void ShowVfxMessageBox(string message, string messageID, string caption,
string captionID, VfxMessageBoxButtons buttonType, VfxMessageBoxTypes
messageBoxType, int timeout, Action<VfxMessageBoxResults>callBack)
Parameter:
Message - der Text im Meldungsfeld angezeigt, wenn Wert für MessageID-Parameter in Vfxmsg-Tabelle nicht
gefunden wird.
MessageID - Konstante mit dieser ID in Datenbank-Tabelle Vfxmsg wird gesucht, und wenn gefundenals
Nachrichtentext im Meldungsfeld verwendet.
Caption - der Text in der Titelleiste des Meldungsfelds, angezeigt wenn Wert für CaptionID Parameter in
Vfxmsg-Tabelle nicht gefunden wird.
CaptionID - Konstante mit dieser ID in Datenbank-Tabelle Vfxmsg wird gesucht, und wenn gefunden als
Beschriftung für VfxMessageBox verwendet.
ButtonType - einer der VfxMessageBoxButtons-Werte, der angibt, welche Buttons im MessageBox angezeigt
werden.
Timeout - gibt die Anzahl der Millisekunden, nach denen das Meldungsfeld automatisch schließt.
Callback - tritt auf, wenn das Meldungsfeld geschlossen wird. Sie können das Ergebnis von das Meldungsfeld
mit dieser Aktion erhalten.
Betrachten Sie das folgende Beispiel:
ShowVfxMessageBox("Are you sure you want to delete this file?",
"MSG_DELETEFILE", "Delete", "CAP_CMDDELETE",
VfxApplicationBase.VfxMessageBoxButtons.YesNo,
VfxApplicationBase.VfxMessageBoxTypes.ExclamationPoint, 0,
DeleteMessageResult);
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Pflichtfelder
Pflichtfelder ermöglichen dem Entwickler Formulare mit Feldern zu erstellen, die der Benutzer auszufüllen
muss. Die Anforderung des Benutzers, einen Eintrag mit leeren Pflichtfeldern zu speichern, wird abgelehnt. In
diesem Fall ändert sich die Rahmenfarbe von Grün in Rot. Ein Meldungsfeld wird auch angezeigt.
Um dieses Verhalten zu implementieren, der Entwickler haben die InitializeValues-Methode der cs-Datei des
Formulars die folgende Zeile hinzu. Um dieses Verhalten zu implementieren, fügt der Entwickler die
InitializeValues-Methode von der Cs-Datei des Formulars die folgende Zeile hinzu. Betrachten Sie die
Implementatierung.
private void InitializeDefaultValues()
{
…
RequiredFields=”;Orders.CurrentItem.orderdate;Orders.CurrentItem.customerid;"
…
WorkAlias = "Orders";
}
Die RequiredFields-Eigenschaft kann einebeliebige Anzahl von durch Semikolon getrennten Feldnamen
enthalten. Die Steuerelemente, die an diese Felder gebunden sind, werden automatisch zu Pflichtfeldern. Es folgt
die Beschreibung der Implementation der Steuerelemente aus dem diskutierten Formular in das Xaml des
Formulars:
<VfxControl:VfxPickField
x:Name="xpgfPageFramePage1cntCustomerid"
TableName="{Binding Path=Customers, Mode=TwoWay}"
FieldList="customerid;customername"
FieldTitle="Kundennummer;Kundenname"
ReturnExpr="customerid"
ReturnExprDesc="customername"
SelectedItem = "{Binding Path=Orders.CurrentItem.customers, Mode=TwoWay}">
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
<VfxObject:VfxDatePicker
x:Name="xpgfPageFramePage1cntOrderdate"
SelectedDate="{Binding Path=Orders.CurrentItem.orderdate, Mode=Twoway}">
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Verwendung von Bilddateien
In Silverswitch Anwendungen können Bilddateien mit den Formaten PNG und JPG verwendet werden.
VfxImage Control kann zum Zeigen von Bildern in den Bau von Formen verwendet werden.
Die folgenden Eigenschaften unterscheiden das VfxImage-Steuerelement vom standardmäßigen Silverlight
Image-Steuerelement.
VfxSourcePath – der Quell-Pfad kann auf dieser Eigenschaft festgelegt werden. Der Pfad enthält keine
Dateinamen. Betrachten Sie das folgende Beispiel einen gültigen Pfad: ".../UploadedFiles/"
In unserem Fall ist "Uploadedfiles" ein Ordner auf der gleichen Ebene wie der ClientBin-Ordner (wo es sich die
Xap-Dateien der Anwendung auf dem Server befinden)
VfxSourceFileName – der Dateiname kann auf dieser Eigenschaft festgelegt werden.
Beispiel Deklaration des VfxImage Steuerelement in XAML:
<VfxObject:VfxImage Name="vfxImage1"
VfxSourcePath="../UploadedFiles/"
VfxSourceFileName="margarita.jpg"
MessageID="MSG_PLEASEWAIT"/>
Beachten Sie, dass das VfxImage-Steuerelement auch über die MessageID-Eigenschaft verfügt. Eine lokalisierte
Meldung zusammen mit Busy-Anzeiger kann beim Laden des Bildes vom Server an den Client angezeigt
werden.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Datenzugriff
Im Datenzugriff steckt ein erhebliches Optimierungspotenzial. Während in Netzwerkanwendungen die vom
Server zum Client übertragene Datenmenge nur von untergeordneter Bedeutung ist, ist in Internetanwendungen
die Übertragung möglichst kleiner Datenmengen von großer Wichtigkeit. Die Übertragungsgeschwindigkeit ist
im Internet in der Regel um ein Vielfaches langsamer, als in Netzwerkanwendungen.
Während in Netzwerkanwendungen die Benutzung einer Tabelle und die Präsentation aller Datensätze in einem
Formular für den Anwender in vielen Fällen möglich ist, ist dies in Internetanwendungen nur dann möglich,
wenn sich in einer Tabelle sicher nur wenige Datensätze befinden und die Strukturgröße eines Datensatzes nicht
besonders groß ist.
Für Internetanwendungen ist es in der Regel erforderlich, dass Formulare zunächst ohne Daten geladen werden
und der Benutzer möglichst genau eingeben muss, welche Daten er sehen will.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Weitere Informationen
Aktuelle Informationen zu Silverswitch sind auf der Webseite http://www.Silverswitch.de zu finden.
Forum, Newsgroup
Unterstützung zu Silverswitch ist in der Newsgroup news://news.dfpug.net erhältlich. Auf die Newsgroup kann
auch über die Startseite von Silverswitch zugegriffen werden.
Technische Dokumentation
In Silverswitch ist eine technische Dokumentation enthalten. Aus der technischen Dokumentation ist die
Vererbung zwischen den einzelnen Klassen ersichtlich. Es sind alle Klassen, Eigenschaften und Methoden
beschrieben.
Silverswitch
Venelina Jordanova, Uwe Habermann
© 2011 dFPUG c/o ISYS GmbH
Herunterladen