Visual Extend 9.0 Workshop April 2005 Uwe Habermann Visual Extend Product Manager [email protected] © 2005 Uwe Habermann Wer spricht da? Dipl.-Inform. Uwe Habermann Selbstständig seit 1986 Arbeitet mit FoxPro seit FPW 2.5 MCP für VFP Freier Mitarbeiter von u. a. ProLib, Wizards & Builders und ISYS Uwe Habermann & Kathrin Leu GbR Entwickelt Branchenlösung und Individualsoftware Visual Extend Product Manager © 2005 Uwe Habermann Die Themen Erstellen einer Anwendung mit dem VFX Application Wizard/Builder Erstellen von Formularen basierend auf Tabellen OneToMany-Formulare Der neue Parent/Child-Builder Treeview-Formulare Erstellen von Formularen basierend auf CursorAdaptern Wechsel von DBC auf SQL-Server und umgekehrt Erstellen von PDF-Dateien und E-Mailversand Sinnvoller Einsatz von Hooks Produktaktivierung Behandlung von Laufzeitfehlern Aktualisierung der Anwendung und der Datenbank beim Kunden Aktualisierung mit dem neuen Update Project Wizard © 2005 Uwe Habermann Visual Extend 9.0 Das größte Update seit es VFX gibt Aktueller Build VFX 9.00.2806 Features für Entwickler Datenzugriff Features für Endanwender Beispielanwendungen VFX90Traders VFX90Test VFPizza Dokumentation © 2005 Uwe Habermann Installation VFX90Setup.exe Vfxmnu.app als Startanwendung einstellen Beim 1. Start von Vfxmnu.app wird ggf. die VFP Task Pane geöffnet und die VFX 9.0 Task Pane wird hinzugefügt Pfadeinstellungen in den Optionen von VFP sind NICHT erforderlich Wer braucht einen Aktivierungsschlüssel? © 2005 Uwe Habermann VFX 9.0 - Task Pane Verwaltung der VFX-Projekte Beim Öffnen wird der aktuelle Pfad auf den Projektordner gesetzt Anlegen neuer Projekte Kompilieren vorhandener Projekte Bearbeiten der Project Properties Ermöglicht die Verwendung eigener Klassen von den VFX Buildern Informationen über VFX 9.0 mit einem Mausklick © 2005 Uwe Habermann VFX 9.0 - Application Wizard Erstellen neuer Projekte Auswahl des Ordners und der Datenbank Texte für den About-Dialog Einstellungen für das Applikationsobjekt • • Auswahl aus 11 Sprachen und noch viel mehr Einstellungen Texte für den Projektinfo-Dialog Alles kompilieren und los geht´s... Projekt: VFPizza, Datenbank: VFP © 2005 Uwe Habermann Die generierte VFX-Anwendung Splash-Screen Anmeldedialog Menü und Symbolleiste Öffnen-Dialog im XP-Stil Benutzerverwaltung Benutzerrechte Datenbankwartung und vieles andere mehr... © 2005 Uwe Habermann Wie geht es weiter? Anlegen der Datenbank mit dem VFP Datenbank-Designer oder mit xCase oder mit SDT Kopieren einer vorbereiteten Datenbank VFP.dbc © 2005 Uwe Habermann VFX 9.0 – Form Wizard Erstellen eines Formulars basierend auf einer der VFX Formularklassen: cDataFormPage cTreeViewForm cTableForm cOneToMany cTreeViewOneToMany cAskViewArg cWizard Verwendung eigener Formularklassen Beispiel: Kunden.scx © 2005 Uwe Habermann VFX 9.0 – DataEnvironment Builder Verwaltung der Datenumgebung Hinzufügen von Tabellen und Ansichten Erstellen von CursorAdapter-Klassen on the fly Verwaltung von Indizes und Relationen Indizes können für CursorAdapter und Ansichten erstellt werden Relationen zwischen allen Cursorn mit Index möglich Beispiel: Customers.dbf © 2005 Uwe Habermann VFX 9.0 – cDataFormPage Builder Reentranter Builder Steuerelemente auf Seitenrahmen Such-Grid mit vielen Funktionen Formulareigenschaften Verwendung eigener Klassen Entsprechend den Vorgaben aus dem DBC Entsprechend den Einstellungen in den VFX - Project Properties Beispiel: Kunden.scx © 2005 Uwe Habermann Das Formular zur Laufzeit Autoedit Inkrementelle Suche im Grid Multi-Column-Sort Benutzerspezifisches Speichern der Einstellungen Größe und Position des Formulars auf dem Desktop Spaltenbreite, Spaltenfolge und Sortierfolge im Grid Suchkriterien © 2005 Uwe Habermann VFX – cOneToMany Builder cOneToMany Bearbeitung und Suche in Parent-Daten wie bei cDataFormPage Bearbeitung von Child-Daten im Grid Bearbeitung von Child-Daten mit anderen Steuerelementen Unterstützung mehrerer Children Beispiel: Auftrag.scx © 2005 Uwe Habermann Linked-Child-Formulare Aufruf eines Child-Formulars Hierarchische Verknüpfung möglich Beliebig viele Children möglich Eigenschaften zur Steuerung lCloseChildformOnExit lAutoSyncChildform Beispiel: Kunden - Aufträge © 2005 Uwe Habermann VFX – Treeview Perfekte Darstellung hierarchischer Daten wie im Windows-Explorer Reentrante Builder cTreeviewForm cTreeviewOnetoMany Beispiel: Kategorien.scx © 2005 Uwe Habermann Datenzugriff Theorie CursorAdapter Klasse –> Eigenschaften, Methoden VFX Connection Manager Vorteile: Datenquelle zur Laufzeit austauschbar • Informationen zur Datenbank verschlüsselt gespeichert DBC SQL Server Fat Client – Datenzugriff über das Internet © 2005 Uwe Habermann Die Lösung CursorAdapter Vorteile: Klasse – Vererbung, Eigenschaften, Methoden Einheitlicher Datenzugriff Datenzugriff auf DBC und SQL Server möglich Umschaltbarkeit zur Laufzeit Builder in VFP vorhanden © 2005 Uwe Habermann Remote Views vs. CursorAdapter Remote View und Connection im DBC gespeichert Nachteil: Verbindungsinformationen im Klartext lesbar • ggf. manipulierbar CursorAdapter als programmatische oder visuelle Klasse in die Exe-Datei eingebunden Zur Laufzeit beliebig konfigurierbar Mit DBC und Remote Datenbanken einsetzbar © 2005 Uwe Habermann Wie macht man es richtig? CursorAdapter-Klasse verwendet ConnectionManager ConnectionManager liest Datenbankinformationen aus Konfigurationsdatei Wichtig: CursorAdapter-Funktionalität unbedingt in einer Klasse speichern © 2005 Uwe Habermann Programmstart Im Init Ereignis des Anwendungsobjekts wird der ConnectionManager instanziiert Beim Instanziieren eines CursorAdapters wird vom ConnectionManager eine Connection geholt Dabei werden aus einer verschlüsselten Tabelle die Datenbankinformationen gelesen Die CursorAdapter-Klasse verwendet die Informationen des ConnectionManagers © 2005 Uwe Habermann CursorAdapter Klasse Herstellen der Verbindung zur Datenbank über den ConnectionManager Holen von ID-Werten Wartbarkeit © 2005 Uwe Habermann IDs IDs sollten von der Datenbank vergeben werden CursorAdapter ermöglichen diese IDs nach dem Speichern aus der Datenbank zu holen InsertCmdRefreshFieldList – Liste zu holender Felder InsertCmdRefreshCmd – wird nach dem Insert ausgeführt – Hier können IDs geholt werden GETAUTOINCVALUE() bei DBC • select * from <myTable> where <IdField>=GETAUTOINCVALUE() @@IDENTITY bei SQL Server © 2005 Uwe Habermann Connection Manager Klasse Instanziierung ohne Datenanbindung Herstellen einer(!) Verbindung beim ersten Bedarf Auslesen der Datenbankinformationen aus einer Datei möglich Eine Connection für alle Datenzugriffe der Anwendung Verwendung mehrerer Datenbanken in einer Anwendung © 2005 Uwe Habermann Planen einer neuen Anwendung Nur mit CusorAdapter arbeiten! basierend auf cBaseDataAccess Vorteile: Es wird nur 1 Verbindung benötigt Austauschbarkeit der Datenquelle Wechsel von DBC zu SQL möglich Entscheidung je Kunde ob DBC oder SQL verwendet werden soll © 2005 Uwe Habermann Datenzugriff Praxis VFX - CursorAdapter Wizard Neues Formular mit dem VFX - Form Wizard erstellen Test Upsizing Manage Config.vfx © 2005 Uwe Habermann CursorAdapter Wizard Erstellen von CursorAdaptern zu allen Tabellen einer Datenbank für VFP-Datenbanken für Remote-Datenbanken © 2005 Uwe Habermann Formulare basierend auf CursorAdapter In allen VFX-Formularklassen können CursorAdapter verwendet werden Eingabe der Parameter auf dem Formular cAskViewArg cAskViewArgPgf Beispiel: KundenCA.scx © 2005 Uwe Habermann Datenquellen bearbeiten Manage Config.vfx Verwaltung des Datenzugriffs Dialog in der Anwendung beim Kunden nutzbar Problemloser Wechsel zwischen DBC und SQL Server ConnectionString empfehlenswert Verschlüsselung mit Kennwort Einstellung mit dem Application Builder goprogram.cconfigpassword © 2005 Uwe Habermann Multi-Client-Support Mandantenfähige Anwendungen mit Remote-Datenbanken! Datenzugriff bearbeiten – Config.vfx Mandantenfähige Anwendungen mit DBC cDatadir="" in Vfxmain.prg Pfadeinstellungen in Vfxpath.dbf Ordner "Data" beim Kunden nicht verwendbar © 2005 Uwe Habermann Test Läuft die Anwendung mit DBC und SQL Server? © 2005 Uwe Habermann Drucken, Speichern als, E-Mail Drucken ist aus allen Formularen möglich ohne eine Berichtsdatei zu erstellen Auswahl des Zeichensatzes Automatische Summierung Unterstützung der Exportformate von VFP 9 Und PDF-Export E-Mailversand aller Exportformate © 2005 Uwe Habermann PDF-Export – Wie geht das? Ausgabe der Berichtsausgabe über einen PostscriptDruckertreiber in eine Datei bei Bedarf automatische Installation eines Postscript-Druckertreibers Konvertierung der Postscript-Datei in eine PDF-Datei mit dem Freeware-Tool Ghostscript bei Bedarf Download aus dem Internet und Installation von Ghostscript vollautomatisch! ggf. wird sogar eine DFÜ-Verbindung für den Internet-Zugang angelegt © 2005 Uwe Habermann Internet und E-Mail Makrosprache zum Download und zur Installation von Programmen aus dem Internet Installation von Ghostscript Installation des Adobe Reader Aktualisierung der Applikation bei Bedarf wird eine DFÜ-Verbindung für den Internet-Zugang angelegt E-Mailversand aller Berichtsausgaben über MAPI © 2005 Uwe Habermann Fax-Unterstützung Als weitere Option zur Berichtsausgabe Unterstützte Faxprogramme: AVM FRITZ!fax Symantec Winfax Beispiel: jedes VFX-Formular © 2005 Uwe Habermann Produktaktivierung VFX 8.0-Anwendungen können mit einem Aktivierungsschlüssel geschützt werden Getrennter Schutz für bis zu 32 Module einer Anwendung Die zur Erstellung des Installationsschlüssels verwendeten Kriterien können je Anwendung vom Entwickler festgelegt werden © 2005 Uwe Habermann Produktaktivierung Einschalten im VFX - Application Wizard 3. Options • Enable product activation • Use „FirstInstall.txt“ file Ändern Eigenschaften von Vfxmain.prg • goProgram.lUseActivation = .T. • goProgram.lActivationType= .F. © 2005 Uwe Habermann Define Activation Rules Definition der Hardware- oder Software-Parameter Ausdruck CPU Number File Creation Date HDD Factory Serial Number HDD Volume Serial Number LAN Card Number Registry Key Value je Anwendung beliebig kombinierbar Regeln speicherbar © 2005 Uwe Habermann Define Activation Rules Vergabe der Rechte bis zu 32 Einzelrechte je Anwendung jedes Recht kann unabhängig von den anderen Rechten freigeschaltet werden Zugriff zur Laufzeit über goProgram.SecurityRights.<RechtName> © 2005 Uwe Habermann Create Activation Key Eingabe des Installationsschlüssels Auswahl der freizuschaltenden Rechte Erstellen eines Aktivierungsschlüssels Werte zur Laufzeit goProgram.SecurityRights.<RechtName>= -1 – nicht aktiviert 0 – nicht freigeschaltet 1 – freigeschaltet © 2005 Uwe Habermann Die Aktivierung aus der Sicht des Kunden Aufforderung zu Aktivierung beim Programmstart Anzeige des Installationsschlüssels Eingabe des Aktivierungsschlüssels Aktivierung über das Menü zum Beispiel beim Zukauf von Rechten Übermittlung der Schlüssel per E-Mail möglich © 2005 Uwe Habermann Fehlerbehandlung Anzeige von Laufzeitfehlern in bekannten WindowsDialogen <g> Akzeptanz durch Benutzer Fehlerberichte können per E-Mail an den Entwickler gesendet werden © 2005 Uwe Habermann Fehlerbehandlung Was soll passieren, wenn ein Fehler auftritt? goProgram.nAppOnErrorBehavior= • 0 – alle Fehler ignorieren • 1 – Anzeige einer Fehlermeldung (Standardwert) • 2 - Programmabbruch Welche Fehlerinformationen werden protokolliert? goProgram.ErrorDetailLevel= • 0 – nur die Fehlermeldung • 1 – Fehlermeldung und Aufrufstapel (Standardwert) • 2 – detaillierte Fehlerinformationen (Standardverhalten bis VFX 7.1) Versand des Fehlerprotokolls per E-Mail goProgram.csupportemail © 2005 Uwe Habermann Aktualisierung der Anwendung über das Internet ftp://<meinserver>/meineExeDatei.vfx oder http://<meinserver>/meineExeDatei.vfx wird in SYS(2023)-Ordner gespeichert Austausch der laufenden Exe-Datei mittels Loader.exe © 2005 Uwe Habermann Hooks Einschalten in Vfxmain.prg nEnableHook=1 Enabled, 2 Disabled, 0 Use form setting Rückgabewerte steuern das Verhalten .T. Ausführung fortsetzen 0 oder .F. Ausführung abbrechen, Rückgabewert .T. 1 Ausführung abbrechen, Rückgabewert .F. © 2005 Uwe Habermann Update Project Wizard Vollautomatische Aktualisierung bestehender VFX-Anwendungen Aktualisierung auf den neuesten VFX Build © 2005 Uwe Habermann Weitere Features für Entwickler Task Panes VFX 9.0 VFX-Community Viele neue Wizards und Builder Project Update Wizard Application Builder CursorAdapter Wizard Parent/Child Builder Audit Trigger Wizard Project Documenting © 2005 Uwe Habermann Benutzerverwaltung Verwaltung von Benutzergruppen mit Rechten Protokolle und Sichten für aktiv eingeloggte Anwender (für exklusive Tasks) © 2005 Uwe Habermann Suchdialog Beliebig viele Filterbedingungen kombinierbar Einstellungen je Formular und Benutzer gespeichert Nur sinnvolle Operatoren Keine ungültigen Eingaben möglich © 2005 Uwe Habermann Datum und Zeit neuer Kalender basierend auf MonthView Control keine OCX-Installation erforderlich Hotkeys zur Datumsauswahl H – heute A – Anfang des Jahres B – Beginn des Monats +/- - 1 Tag vorwärts oder zurück Eingabe von Datetime-Werten © 2005 Uwe Habermann OLE drag & drop Vollständig generisch in VFX integriert aus einem Steuerelement • nOLEenabledrag=1 • nOLEdropForceEditmode=1 aus einer Seite eines Seitenrahmens unter Berücksichtigung der Taborder • nPageOLEdragdrop=1 aus einem Grid • immer eingeschaltet Unterstützung aller Datentypen © 2005 Uwe Habermann Einstellung der Sprache zur Laufzeit Runtime Localization Im Anmeldedialog In einer Combobox in der Symbolleiste Beispiel: VFX90Test und VFX90Traders © 2005 Uwe Habermann Datensicherung mit ZIP-Funktion ZIP-Algorithmus in VFX 9.0 integriert Datensicherung der aktuellen Datenbank in eine Zip-Datei über einen Menüpunkt Wiederherstellung der aktuellen Datenbank aus einer Zip-Datei über einen Menüpunkt direkter Aufruf der ZIP-Funktionen für eigene Anwendungen möglich © 2005 Uwe Habermann VFX.fll Internet, E-Mail und Hilfsfunktionen Produktaktivierung Datensicherung SQL Server Achtung: Die VFX.fll muss an den Kunden mitgeliefert werden! © 2005 Uwe Habermann VFX-Menü-Designer WYSIWYG Unterstützung aller Menü-Features, die VFP bietet Schriftartattribute, Effekte alle Events Menüeinträge mit Markierung Unterstützung von Konstanten sprachunabhängige Menüs © 2005 Uwe Habermann Wichtige VFX-Methoden Valid auf Formularebene OnRecordMove OnPostInsert OnSave OnPrint OnPrev, OnNext, OnTop, OnBottom © 2005 Uwe Habermann Dokumentenverwaltung Container-Klasse zur Verwaltung von Dokumenten Per Drag & Drop auf jedem Formular einsetzbar Einfache Konfiguration Dokumente sind „Children“ Beispiel: Parent.scx in VFX90Test © 2005 Uwe Habermann Audit-Trail Neuer Trigger Wizard! Trigger in den Tabellen _audit_insert() _audit_update() _audit_delete() Anzeige des Protokolls über ein VFX-Formular Und-Verknüpfung mit anderen Triggern möglich © 2005 Uwe Habermann Was noch? Integriertes Werkzeug für die Datenbankreparatur Konfigurieren einer DFÜ-Netzwerkverbindung Define DUN connection parameters Integration eines Fernwartungsprogramms Automatische Installation des Abobe Reader beim Kunden Und vieles mehr… © 2005 Uwe Habermann VFX90Test Benutzergruppen Dokument-Container COneToManyPageFrame Geschäftsgrafiken mit CBusinessGraph Menü Extras © 2005 Uwe Habermann VFX90Traders Basierend auf Tastrade.dbc Office Compatible Drucken, Speichern, E-Mailversand, Fax 1:n Formulare mit Auswahllisten Produktaktivierung Aktualisierung der Anwendung über das Internet Kundenverwaltung Versionsverwaltung Fernwartung © 2005 Uwe Habermann Wir haben das Ziel erreicht! Die Anwendung ist fertig. Kompletter Rahmen durch VFX erstellt Datenbank mit üblichen Tools erstellt Formulare mit den VFX Buildern erstellt Bearbeitung mit VFP zu jeder Zeit Hohe Qualität = zufriedene Kunden © 2005 Uwe Habermann Links Download und Infos zu VFX: www.visualextend.de Mehr Infos zu VFX: www.my-vfx.de Kostenloser Support zu VFX: news.dfpug.de © 2005 Uwe Habermann VFX 9.0 Jetzt testen! • Aktivierungsschlüssel für 30 Tage kostenlos! • Beispielanwendung VFX90Test • Beispielanwendung VFX90Traders • Beispielanwendung VFPizza • Handbuch deutsch und englisch • Umfangreiche Informationen • Newsgroup • Portal © 2005 Uwe Habermann Vielen Dank für Euer Interesse! Viel Spaß mit VFX 9.0 wünscht Uwe Habermann © 2005 Uwe Habermann Pause! © 2005 Uwe Habermann