D-DBIIntegration der DBI Controls
aus Sedna in VFP am Beispiel von Visual Extend
VFX 10.0
• 11 Jahre VFX• dFPUG c/o ISYS GmbH• Marktführer in Europa• Mehr Anwender als alle anderen Framework
Hersteller zusammen• Einziges Framework mit voller
Cursoradapter Unterstützung• Erstes Framework mit Unterstützung
der DBI Sedna Components
Visual Extend 10.0
• VFX 10.0 Build 1104 auf der Konferenz-CD
• 4 Beispielanwendungen– VFPizza– DBI Sedna Components installieren
• 20 Stunden Videos
Wer ist denn das?
• Uwe Habermann
• Diplom-Informatiker, TU Berlin
• FoxPro Entwickler seit FPW 2.5
• MCP für VFP
• Visual Extend Product Manager
• Freiberuflich tätig für ISYS, Wizards & Builders, ProLib, …
• Uwe Habermann & Kathrin Leu GbR
Sedna
• VFP 9 SP 2• DBI Sedna Components• Upsizing Wizard• Data Explorer• Sedna Reporting Features• VistaDialogs4COM• NET4COM• MY for VFP• VS 2005 Extension for VFP
DBI Sedna Components
• ctContact Kontaktliste wie in Outlook• ctDays Kalender Tagesansicht• ctDEdit Datums- und Zeiteingabe• ctDropMenu Rechtsklickmenü• ctFrame Hintergrund• ctListBar Navigationsbereich• ctToolBar Menü und Symbolleiste• ctTray Windows System Tray
Abhängigkeiten
• Kompiliert mit Microsoft Visual C++ 6.0• MFC42.dll• MSVCRT.dll
DBI Studio Controls R3
• Noch viel mehr Controls• Schon lange erhältlich• Controls sind nicht neu
• Gleiche Features• Gleiche IDs
Integration in VFXBeispiele in VFPizza
• ctContact Kontaktliste wie in Outlook
CustomersDBI.scx• ctDEdit Datums- und Zeiteingabe
Orders.scx• ctDropMenu Rechtsklickmenü• ctFrame Hintergrund
Customers.scx• ctListBar Navigationsbereich• ctToolBar Menü und Symbolleiste• ctTray Windows System Tray
ctContact
• ctContact Kontaktliste wie in Outlook
• Beispiel in CustomersDBI.scx
ctContact
• Vfxappl.vcx - cDBIctContact• Eigenschaften• .IDFieldName = <ID Feld der Tabelle>• .NodeText = <Ausdruck für Überschrift>• .aFieldsList = <Array mit Datenbeschreibung>
• .HideEmptyItems = .T.
ctContact
• Überschriften füllen:cDBIctContact.FillTreeView
WITH this
lnNewHeaderIndex = ; .oleContact.AddHeader(ALLTRIM( ; TRANSFORM(EVALUATE(.NodeText))))
.oleContact.HeaderCargo( ; lnNewHeaderIndex) = lcNodeKey
ENDWITH
ctContact
• Datenbeschreibung füllen:
CustomersDBI.scx – Init• Array enthält Beschriftungen und FeldnamenDIMENSION this.afieldslist (2,2)
this.afieldslist[1,1] = 'Telefon:'
this.afieldslist[1,2] = 'phone'
this.afieldslist[2,1] = 'Adresse:'
this.afieldslist[2,2] = 'address'
this.oleContact.ColumnWidth = 184• RETURN DODEFAULT()
ctContact
• Daten füllen:cDBIctContact.FillTreeView
WITH this
FOR i=1 TO .oleContact.TitleCount
.oleContact.ItemText( ; lnNewHeaderIndex,i) = ; ALLTRIM(TRANSFORM(EVALUATE( ; .afieldslist[i,2])))
ENDFOR
ENDWITH
ctContact
• Builder von DBI vorhanden
• Kleiner Nachteil
Die Überschrift kann nicht bearbeitet werden
ctDays
• ctDays Kalender Tagesansicht
• Demo in SednaDemos• Builder von DBI vorhanden
ctDEdit
• ctDEdit Datums- und Zeiteingabe
• Bearbeitung von Zeit- oder Datumswerten• Unterstützung aller SET Einstellungen von VFP
• Beispiel in OrdersCA.scx
ctDEdit
• Vfxappl.vcx – cDBIctDEdit• Eigenschaften• .cControlsource = <Controlsource> <- Wichtig!• .DropButton = <z. B. Kalenderanzeige>• .SpinButton = <z. B. Tag ändern>• .FormatType = <0-2 = Datumformat oder 3 = Zeit>
ctDEdit
• Vfxappl.vcx – cDBIctDEdit.Init
Unterstützung aller SET Einstellungen von VFP• cDBIctDEdit.ClickDrop
ClickDrop startet Kalender• cDBIctDEdit.ClickSpin
Tag ändern• Freundliches Verhalten bei Falscheingabe
• Builder von DBI vorhanden
ctDropMenu
• ctDropMenu Rechtsklickmenü• In VFX einstellbar mit
goProgram.nMenuAndToolbarStyle• 0 – VFP Menü (Standardwert)• 1 – DBI ctToolbar
• VfxFormBase.vcx• Formularklasse cDBIDropMenuVFXBase
ctDropMenu
• Verwendung in Vfxobjbase.vcx – RightClick• Hinzufügen eines Eintrags
loCtDropMenu.octDropMenu. ; Object.AddItem(lcCutText, 0, 1)
• Hinzufügen eines Icons
loCtDropMenu.octDropMenu. ; ItemPicture(1) = ; LOADPICTURE(lcPictureName)
• Builder von DBI vorhanden
ctFrame
• ctFrame Hintergrund
• Container Steuerelement• Anzeige von Farbverläufen• Resizable
• Beispiel in Customers.scx• Builder von DBI vorhanden
ctListBar
• ctListBar Navigationsbereich
• In VFX einstellbar mit:
goProgram.nOpenDialogStyle• 0 – Öffnen Formular• 1 – XP Öffnen Dialog• 3 – DBI Öffnen Dialog
ctListBar
• Vfxformbase.vcx – cDBIOpenFormVFXBase• Gruppe hinzufügen (MakeGroup)
lnIndex = this.oleListBar. ; addList(lcGroupCaption)
• Eintrag hinzufügen (MakeItem)
lnIndex = this.OleListBar. ; AddItem(lnIndex, lcCaption)
• Data Driven
ctListBar
• Demo in Sednademos• Keine typische Anwendung
• Builder von DBI vorhanden
ctToolBar
• ctToolBar Menü und Symbolleiste
• In VFX einstellbar mit:
goProgram.nMenuAndToolbarStyle• 0 – VFP Menü und Symbolleiste (Standardwert)• 1 – DBI ctToolbar
ctToolBar
• Menü
Vfxappl.vcx – cDBIMenuBar• Symbolleiste
Vfxappl.vcx – cDBINavigatorBar
ctToolBar
• Menü
cDBIMenuBar.LoadMenu• Data Driven aus Vfxmnu.vmx gelesen
ctToolBar
• Menü hinzufügen (LoadMenu)
lnIndex = this.octToolbar. ; AddItem(0, lcItemDescription, 0)
• Menüeintrag hinzufügen (LoadDropDownMenu)
lnIndex = this.octToolbar. ;AddItem(lnItemType, ; lcItemDescription, lnPicture)
• Icon hinzufügen
lnPicture = This.octToolbar. ; AddImage(LOADPICTURE(lcPictureName))
ctToolBar
• Symbolleiste
cDBINavigatorBar.LoadToolbar
ctToolBar
• Icon hinzufügen (LoadToolbar)
lnPictureIndex = This.AddPicture ; ("BITMAP\TOOLBAR\new.bmp")
• Schaltfläche hinzufügen (LoadToolbar)
lnButtonIndex = This.octOfficeBar. ; AddItem(0, "", lnPictureIndex)
ctToolBar
• Vorsicht:
Beim Entfernen von Menüeinträgen oder Elementen aus der Symbolleiste, werden die IDs neu vergeben!
ctToolBar
• In VFX einstellbar mit:
goProgram.cDBIMainToolbar• Name der Klasse mit der DBI Symbolleiste
goProgram.cDBIMainMenu• Name der Klasse mit dem DBI Menü
ctToolBar
• Selectitem.prg für Hotkeys• VFX – Application Builder• VFX – Update Project• VFX – Menu Designer• Exe Datei erstellen
• Builder von DBI vorhanden
ctTray
• ctTray Windows System Tray
• Vfxappl.vcx – cSysTray– Init– IconClick
• In VFX einstellbar mit:
goProgram.lHideAppInTray
ctTray
• Integration in VFP Anwendungen
IF _SCREEN.WindowState = 1 AND ;This.lHideAppInTray
This.oSysTray = ;
Createobject("cSysTray")
_SCREEN.Hide()
ENDIF
• Builder von DBI vorhanden
Demos von DBI
• Demo Anwendung mit vielen Beispielen
• Dokumentation in Windows Hilfedateien
DBI Sedna Components
• ctContact 02.2003 ctContact.hlp• ctDays 07.2003 ctDays.hlp• ctDEdit 04.2006 ctDEdit.hlp• ctDropMenu 04.2006 ctDropMenu.hlp• ctFrame 03.2006 ctFrame.hlp• ctListBar 04.2006 ctListBar.chm• ctToolBar 05.2006 ctToolbar.chm• ctTray 03.2006 ctTray.hlp
Anzeige von hlp Dateien auf Windows Vista
• Windows hlp Hilfesystem muss nachinstalliert werden:
• http://support.microsoft.com/kb/917607
Installation beim Kunden
• Verwendung eines Installationsprogramms• OCXe sind „selbstregistrierend“
• Programmatische Registrierung möglich, aber nicht erforderlich
Vielen Dank undviel Spaß mit Sedna!Bitte denkt an die Bewertungsbögen!
Uwe Habermann