L-VFX Spaß mit VFX zu später Stunde Uwe Habermann Uwe@hceood.eu
VFX – Installation Wizard Wenn mit VFP 64 bit gearbeitet wird, Unterstützung von 64 bit Anwendungen VFX64.fll vfpar.dll vfpat.dll
VFX – Installation Wizard Erstellen einer Exe-Datei Erstellen eines Distrbutionsordners Bereitstellen einer leeren Datenbank VFP 9 Runtime Benötigte ActiveX Controls
VFX – Installation Wizard TreeView: MSComctl.ocx (v6.0 SP6) ImageList: MSComctl.ocx (v6.0 SP6) Month View: MSComct2.ocx (v6.0 SP6) SOAP: mssoap30.dll (v3.0) E-Mail: MSMAPI.ocx Geschäftsgrafiken: MSCHRT20.ocx Hilfe: Foxhhelp9.exe und foxhhelpps9.dll
VFX – Installation Wizard Unterstützung von VFP 64 bit Vorbereitete Distribution kopierbar, lauffähig ohne Installation auf Memory Stick auf USB Festplatte auf CD-ROM
Anwendungsverteilung Setup Installation Wizard Installshield (Express) Wise Distribution Updates Anwendung Aktualisierung der Datenbankstruktur
Aktualisierung von Anwendungen Manuelle Updates Automatische Updates Loader.exe muss vorhanden sein!
Aktualisierung von Anwendungen Automatische Updates Einstellungen wie bei Windows Automatischer Download und Installation Automatischer Download Benachrichtigen Deaktivieren Jetzt auf Aktualisierungen prüfen
Aktualisierung von Anwendungen Allgemeine Einstellungen cFoxAppl.lAllowUpdates=.T. cFoxAppl.cIniUrl Enthält Versionsnummer Vfxsys.UpdType Was passiert beim 1. Anwendungsstart je Tag? Vfxsys.lastcheckd Datum der letzten automatischen Überprüfung Vfxsys.UpdateApp D:http://localhost/UpdateProject/neueExe.vfx
Vfxsys.UpdType 1 – Automatisches herunterladen und installieren, wenn Aktualisierungen vorhanden sind. Die Überprüfung wird beim ersten Anwendungsstart täglich durchgeführt. 2 – Automatisches herunterladen von Aktualisierungen mit anschließender Frage, ob die Aktualisierung installiert werden soll. Die Überprüfung wird beim ersten Anwendungsstart täglich durchgeführt. 3 – Überprüfung nach verfügbaren Aktualisierungen täglich beim ersten Anwendungsstart. Bei vorhandener aktualisierter Programmversion wird der Benutzer gefragt, ob er die Aktualisierung herunterladen und installieren will. 4 – Manuelle Überprüfung. Die Überprüfung auf Aktualisierungen kann aus dem Menü aufgerufen werden.
Was passiert beim Kunden? D: ftp://<domain>/meineExeDatei.vfx oder D: http://<domain>/meineExeDatei.vfx wird in SYS(2023)-Ordner (Temp) gespeichert Austausch der laufenden Exe-Datei mittels Loader.exe
Aktualisierung der Datenbank beim Kunden Aktualisierung der Struktur von Config.vfx Aktualisierung von allen in Config.vfx eingetragenen Datenbanken DBC SQL
Aktualisierung der Datenbank beim Kunden DBC Basierend auf Gendbc Code Vfx_vss.prg Ggf. Vsskrt.dbf mit Stored Procedures SQL Basierend auf Metadaten goProgram.cMetaPathDir Data\update\ goProgram.cMetaDataTableName Datadict.dbf
Aktualisierung der Datenbank beim Kunden lSaveDataBeforeUpdate = .T. lInformUserForUpdate = .F. lClientDatabaseUpdate = .T. lCheckForDBUpdate = .F. cUpdateDir = Data\Update
VFX – Application Builder Neue Einstellungen (nicht nur) für 64 bit Use native VFP Calendar Use native VFP Favorites Screen
VFX cEmail Unterstützung mehrerer E-Mailempfänger Auch mit VfpExMapi
VFX cDataFormBase.lKeepOpenAfterInsertOnly Nach dem Speichern wird das Formular wieder für den Einfügemodus eingestellt Nur wenn lInsertOnly = .T.
VFX Config.fpw Befindet sich jetzt im Ordner Include
VFX Config.vfx und VfxPath.dbf werden jetzt im Ordner ProgramData gesucht, wenn nicht im Exe-Ordner vohanden
VFX cFoxAppl.lAllowSearch Abschalten der Filterfunktion Menüeintrag Schaltfläche in Symbolleiste Schaltfläche in Multifunktionsleiste
VfxCountry Pickfield VFX – Update Project VfxCtrl.vcx – cCountryPickField Voreingestellt zur Auswahl eines Landes aus VfxCountry.dbf VFX – Update Project Neue Option: Update VfxCountry Bisher wurde VfxCountry.dbf immer überschrieben
Project Hook Änderungen für Kompilierung mit 64 bit SET LIBRARY TO VFX.fll oder VFX64.fll Kein Aufruf von Refox Aufruf externer Prg-Datei beforebuildappl.prg
Kleinigkeit Zentriertes Hintergrundbild
cPickDate Neue Eigenschaft Value des Containers Hotkeys werden bei Sprachwechsel zur Laufzeit jetzt lokalisiert
Serienbriefassistent Einsatz des Serienbriefassistenten für Endanwender in Ihrer Anwendung Versand von E-Mail Fax FritzFax WinFax Serienbrief
Serienbriefassistent Customers.scx cCommandButton hinzufügen Code für Click Ereignis: goprogram.runform("mailmerge", thisform.DataSessionId)
Serienbriefassistent Neues VFP Formular cMailMerge auf das Formular ziehen Im Eigenschaftsfenster Form1 auswählen Menü Formular Formular löschen Formularsatz löschen
Serienbriefassistent Eigenschaften einstellen: cDatasource = „Customers“ cFaxNumberFieldName = „fax“ cMailAddressFieldName = „email“
Serienbriefassistent Code für Init Ereignis: LPARAMETERS tcarg lnDataSessionID = tcArg SET DATASESSION TO ; lnDataSessionID RETURN DODEFAULT(tcarg)
Serienbriefassistent Formular speichern MailMerge.scx Test
Parent/Child Szenarios Komplexe Parent/Child Szenarios mit vielen automatisierten Features
Parent/Child Szenarios VFX – Parent/Child Builder Child Formular starten Viele Einstellmöglichkeiten Aktive Seite … Methode des Parent Formulars aufrufen
Abfragen-Assistent Neuer Enduser-Abfragen-Assistent mit Abfragen-Verwaltung Ergebnisanzeige in dynamischen Grids mit Sortierung / inkrementeller Suche Ergebnisversand als Excel-Tabelle via eMail
Abfragen-Assistent VfxQueryDialog in Vfxfopen.dbf eintragen Test zur Laufzeit
Dokumentenverwaltung Customers.scx Datenumgebung VFX – DataEnvironment Builder New CA Seite Properties name = „caVfxdocuments “ alias = „caVfxdocuments“ “ use connection settings in builder only“
Dokumentenverwaltung Seite Data Access SELECT * FROM caVfxdocuments WHERE PARENTKEY = ?CUSTOMERS.CUSTOMERID Bei Schema auf „Build“ klicken
Dokumentenverwaltung Seite Auto Updates Auto-Update markieren Update All fields markieren DOCID als Key markieren not Updateable
Dokumentenverwaltung VFX – DataEnvironment Builder Index auf Parentkey erstellen
Dokumentenverwaltung Formularmethode OnRecordMove ThisForm.DataEnvironment. caVfxDocuments.CursorRefresh() RETURN DODEFAULT()
Dokumentenverwaltung VFX – CDataFormPage Builder Page Count = 2 Seite 3 des Formulars aktivieren cDocumentManagement auf Seite 3 des Formulars ziehen
Dokumentenverwaltung VFX – Document Management Builder Document Table: caVfxDocuments Foreign Key from Document table to Parent table: parentkey Parent Table: customers Parent Table Key: customerid
Dokumentenverwaltung VFX – Document Management Builder Seite Options *wait window "CChildGrid::OnPostInsert() is empty!“ DODEFAULT() *{ _VFX_Builder - 05/13/09 09:45:56 AM replace parentkey with customers.customerid ; in vfxdocuments *}
Dokumentenverwaltung Formular speichern Test
Geschäftsgrafiken Erstellung von Geschäftsgrafiken in Anwendungen
Geschäftsgrafiken Erstellung von Geschäftsgrafiken in Anwendungen Vorbereitung der Daten: UPDATE tblOrders SET totalsum =(select SUM(quantity*price) FROM tblOrderDetails WHERE tblOrderDetails.orderid = tblOrders.orderid)
Geschäftsgrafiken VFX – Form Wizard Neues Formular: cDataFormPage Name: BGraph.scx
Geschäftsgrafiken VFX – Dataenvironment Builder NewCA name = „caGraphData“ alias = „caGraphData“ “use conn settings in builder only“
Geschäftsgrafiken VFX – Dataenvironment Builder Data Access SELECT CUSTOMERID, SUM(TOTALSUM) AS TOTALSUM FROM TBLORDERS GROUP BY CUSTOMERID ORDER BY CUSTOMERID Schema: „Build“
Geschäftsgrafiken VFX – Dataenvironment Builder Auto Updates Send Updates = .F.
Geschäftsgrafiken VFX – cDataformpage Builder GridPage UseGridPage = .F. pgfPageframe.Tabs = .F.
Geschäftsgrafiken VFX – cDataformpage Builder cBusinessGraph aus Vfxctrl.vcx auf Seite ziehen
Geschäftsgrafiken Code für Init: LPARAMETERS tcArg LOCAL lInitOk lInitOk = DODEFAULT(tcArg) IF lInitOk Thisform.pgfPAGEFRAME.Page1. cbusinessgraph1.DrawGraph() ENDIF RETURN lInitOk
Geschäftsgrafiken VFX – Business Graph Builder Alias: caGraphData Label Field Name: customerid Graph Type: 3D Line Graph Title: Auftragssummen je Kunde Field: totalsum Legend text: Umsatz
Geschäftsgrafiken Formular speichern und testen
GDI+ Geschäftsgrafiken Erstellung von Geschäftsgrafiken in Anwendungen
GDI+ Geschäftsgrafiken Erstellung von Geschäftsgrafiken in Anwendungen Vorbereitung der Daten: UPDATE tblOrders SET totalsum =(select SUM(quantity*price) FROM tblOrderDetails WHERE tblOrderDetails.orderid = tblOrders.orderid)
GDI+ Geschäftsgrafiken VFX – Form Wizard Neues Formular: cDataFormPage Name: BGraph.scx
GDI+ Geschäftsgrafiken VFX – Dataenvironment Builder NewCA name = „caGraphData“ alias = „caGraphData“ “use conn settings in builder only“
GDI+ Geschäftsgrafiken VFX – Dataenvironment Builder Data Access SELECT CUSTOMERID, SUM(TOTALSUM) AS TOTALSUM FROM TBLORDERS GROUP BY CUSTOMERID ORDER BY CUSTOMERID Schema: „Build“
GDI+ Geschäftsgrafiken VFX – Dataenvironment Builder Auto Updates Send Updates = .F.
GDI+ Geschäftsgrafiken VFX – cDataformpage Builder GridPage UseGridPage = .F. pgfPageframe.Tabs = .F.
GDI+ Geschäftsgrafiken VFX – cDataformpage Builder cBusinessGraph aus Vfxctrl.vcx auf Seite ziehen
GDI+ Geschäftsgrafiken Code für Init: LPARAMETERS tcArg LOCAL lInitOk lInitOk = DODEFAULT(tcArg) IF lInitOk Thisform.pgfPAGEFRAME.Page1. cbusinessgraph1.DrawGraph() ENDIF RETURN lInitOk
GDI+ Geschäftsgrafiken VFX – Business Graph Builder Alias: caGraphData Label Field Name: customerid Graph Type: 3D Line Graph Title: Auftragssummen je Kunde Field: totalsum Legend text: Umsatz
Multifunktionsleiste Multifunktionsleiste einsetzen und erweitern Umsetzung von Menüs und Symbolleisten für Formulare Programmatisch Seiten hinzufügen
Multifunktionsleiste Appl.vcx – cFoxAppl nMenuAndToolbarStyle = 2 VFX – Application Builder Allow User Customization
Multifunktionsleiste Multifunktionsleiste testen Kundenformular Seite in Multifunktionsleiste
QR-Codes QR = quick response Entwickelt von Denso für Toyota Markierung von Autoteilen Unabhängig von Leseausrichtung Schnellere Erkennung als bei Barcodes Hohe Fehlertoleranz Bis zu 30% können zerstört sein
QR-Codes QR-Code Größe Größe in Pixel 2 66 x 66 3 99 x 99 4 132 x 132 5 165 x 165 6 198 x 198 7 231 x 231 8 264 x 264 9 297 x 297 10 330 x 330 11 363 x 363 12 396 x 396
QR-Codes Auf Codeplex https://vfpx.codeplex.com/wikipage?title=FoxBarcodeQR&referringTitle=Home BarCodeLibrary.dll SetConfiguration() GenerateFile()
QR-Codes PROCEDURE QRBarcodeImage(tcText, tcFileName, tnSize, tnType) * Declare the functions of BarCodeLibrary.dll DECLARE INTEGER GenerateFile IN BarCodeLibrary.DLL ; STRING cData, STRING cFileName DECLARE INTEGER SetConfiguration IN BarCodeLibrary.DLL ; INTEGER nSize, INTEGER nImageType * Create QR Barcode Image SetConfiguration(tnSize, tnType) GenerateFile(tcText, lcFileName) CLEAR DLLS SetConfiguration, GenerateFile RETURN lcFileName
QR-Codes Parameter tnText tcFilename tnSize tnType abzubildende Zeichenkette tcFilename Dateiname, Standardwert SYS(2015) tnSize Größe des QR-Codes, Standardwert 4 tnType 0 – bmp, 1 – jpg, 2 – png, Standardwert 0
QR-Codes Rückgabewert Name der generierten Datei
QR-Codes Druck Image in Bericht Controlsource Feld mit Dateiname Private Variable mit Dateiname
QR-Codes Implementierung in VFX BarCodeLibrary.DLL Beispiel: VFPizza17, Cusomers.scx Visitenkarte drucken BarCodeLibrary.DLL Muss nicht ausgeliefert werden Download bei erster Verwendung
QR-Codes Zahlung mit Girocode http://www.Girocode.de Überweisungsdaten in QR-Datei Druck auf Rechnung Scan mit Handy Bestätigung der Zahlung Keine Übertragungsfehler Schnell
Noch nicht erfüllte Wünsche ZUGferd
Ihr seid gefragt! Änderungen… Erweiterungen…
Nächste Veranstaltung CeBIT-Treffen Donnerstag, 23.03.2017 Ab 18:30 Uhr Central-Hotel Kaiserhof Ernst-August-Platz 4 30159 Hannover
Vielen Dank! Uwe Habermann Uwe@hceood.eu