WPF Avalon Formulare aus VFP verwenden Venelina Jordanova Uwe Habermann [email protected] [email protected] Agenda * Was ist WPF? * Architektur * Voraussetzungen beim Entwickler * Voraussetzungen beim Kunden * Beispiele • Eigene Beispiele • Avalon Patient Monitoring Was wollen wir eigentlich? * VFP Anwendung * WPF Benutzeroberfläche * Mehrschichtenarchitektur ? * Fragen Jederzeit! Windows Presentation Foundation * Technologie für Benutzeroberflächen * Enthalten im .NET Framework 3.0 * Benutzung aus Visual Studio einfach möglich * XAML Formulare * Viele Steuerelemente * Vererbung Aus der Sicht von VFP * Formulare * Datenanbindung * Controlsource * Event Anbindung • Interactivechange • Valid Konzept / Architektur * Mehrschichtenarchitetur * Entwicklungsumgebungen • VFP * Möglichst viel • Visual Studio * Möglichst wenig und generisch Konzept / Architektur * Datenbank • VFP, SQL Server, andere * Datenzugriff • VFP Cursoradapter * Geschäftslogik • VFP * Steuerung • .NET DLL * Benutzeroberfläche • XAML WPF Layer Single data field value VFP Layer VFP Business rules classes Data request Data VFP Data Access Database Layer VFP MS SQL DB/2 Oracle MySQL Events handling Call VFP methods Single field data Value request Presentation XAML code Generic .Net object that renders XAML and gives feedback to VFP application for events XAML Benutzeroberfläche .NET WPF Manager DLL VFP COM Server Backend Provider DLL VFP Exe-Datei Steuerung Geschäftslogik Datenbank Hauptprogramm, Rahmen * VFP Projekt * Datenzugriff * Geschäftslogik * Ansteuerung von WPF * unsichtbar Benutzeroberfläche * MDI Interface • Multiple Document Interface • Steuerung mit Menü und/oder Symbolleiste * Sichtbarer Rahmen * Formulare Ablauf * Start VFP Anwendung * Initialisierung Mittelschicht Komponenten * Datenanbindung * Anzeige der Benutzeroberfläche Cancel closing – Yes/No Fire LostFocus event Field value reference Fire Closing event WPFBackend.DLL SetFieldValue() Save? CA object Data Data request Data VFP Data Access VFP code decides Business rules and what action to take: process flow control object start a new form User Action: Close button clicked Send new value VFP Business rules classes User Action: Tab key pressed BackendDataprovider object GetFieldValue() VFP Layer Render UI Data request Start WPF sub-form WPF form Field value User clicks a toolbar button Start WPF Main form WPF Layer Database Layer Start time Process flow (object instantiating and events firing) Data flow Geschäftslogik * Gewohntes VFP * Ereignisse aus der WPF Benutzeroberfläche steuern die Geschäftslogik Datenzugriff * Gewohntes VFP * Cursoradapter • Objektorientiert! * Alle unterstützen Datenbanken Datenbank * VFP DBC * SQL Server * Andere • ODBC • OLE DB • Muss mit Cursoradapter erreichbar sein Data Binding * Controlsource in VFP * Definierte Eigenschaft Controlsource in WPF * Realisierung mit VFP COM Server Event Binding * Reagieren auf Ereignisse * Beispiele: Valid, When, Gotfocus, Lostfocus, Interactivechange, Keypress, Init, Destroy, Click, Dblclick, Rightclick * WPF -> WPF Manager DLL -> VFP BackendDataProvider -> VFP cursor Entwicklung der Benutzeroberfläche * Editor * Microsoft Expression Blend Bereitstellung der Benutzeroberfläche * XAML Formulare in VFP Anwendung * WPF Manager DLL • Schicht zwischen VFP und .NET • Mit Visual Studio erstellt • Anzeige der XAML Formulare Voraussetzungen beim Entwickler * VFP 9 * .NET Framework 3.0 * Visual Studio 2008 * Expression Blend Voraussetzungen beim Kunden * .NET Framework 3.0 • Installierbar auf XP und 2003 • Enthalten in Vista * WPF Manager DLL mit Regasm registrieren C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ RegAsm.exe <DLL Path>\WpfInterface.dll /codebase /tlb:WpfInterface.tlb * VFP Runtime * Dateien der Anwendung Beispielanwendung Healthcare * Avalon Patient Monitoring * Optisch ansprechend * Keine Datenanbindung Vielen Dank und viel Spaß mit WPF! Venelina & Uwe