220 likes | 350 Views
Programmierung mit GUINEU. Venelina Jordanova Venelina@VandU.eu. Uwe Habermann Uwe@VandU.eu. GUINEU?. Verwendung von VFP Code in Silverlight Client-Projekten Also im Browser beim Benutzer Läuft auch auf Mac und weiteren künftig verfügbaren Plattformen. GUINEU. Von Christof Wollenhaupt
E N D
Programmierung mit GUINEU VenelinaJordanova Venelina@VandU.eu Uwe Habermann Uwe@VandU.eu
GUINEU? • Verwendung von VFP Code in Silverlight Client-Projekten • Also im Browser beim Benutzer • Läuft auch auf Mac und weiteren künftig verfügbaren Plattformen
GUINEU • Von Christof Wollenhaupt • www.GUINEU.net • VFP Laufzeitumgebung in C# entwickelt • Angepasste Version für Silverswitch Client Anwendungen • Exklusiv in Silverswitch • 1 DLL • VFP Code aus FXP Datei ausführen
GUINEUWas kann man damit machen? • Geschäftslogik • Steuerung der Silverlight Benutzeroberfläche • Aber: • Keine VFP Benutzeroberfläche • (Messagebox, Wait Window, …) • Kein Dateizugriff • Das sind keine Einschränkungen!
GUINEUIntegration in Silverswitch • Wrapper-Projekt • VfxGuineuRuntime • FXP Datei • Im Ordner VFPCode speichern • Buildvorgang: Eingebettete Ressource • PRG Datei (zur Bearbeitung mit VFP) • Öffnen mit VFP als Standard • Buildvorgang: keine
GUINEU • Deklaration using VfxGuineuRuntime; private readonlyVfxGuineu _fox = new VfxGuineu("<Name>.FXP");
GUINEU • Funktionsaufruf _fox.Do("<Funktionsname>", <Parameter 1>, <Parameter 2>, …); • 1. Parameter ist Funktionsname • Folgende Parameter werden an die Funktionübergeben
GUINEU • Parameterübergabe • auch Objekte! • Viele VFP Funktionen • Viele VFP Befehle • Keine Ausführung von C# Methoden • Keine Child-Objekte ansprechbar
VFP aus VWD starten • Projekt VfxGuineuRuntime • Ordner VFPCode • PRG Datei hinzufügen • Rechtsklick, Öffnen mit… • VFP als Standard einstellen • Rechtsklick, Buildvorgang • keine • Einstellung in VFP • Vor dem Speichern kompilieren
VFP aus VWD starten • Projekt VfxGuineuRuntime • Ordner VFPCode • FXP Datei hinzufügen • Rechtsklick, Buildvorgang • Eingebettete Ressource
CheckBoxsteuert TextBox.IsReadOnly • XAML Code: <VfxObject:VfxCheckBox Content="ReadOnly" Name="vfxReadOnlyCheckBox" Click="vfxReadOnlyCheckBox_Checked"/>
CheckBoxsteuert TextBox.IsReadOnly • C# Code: private voidvfxReadOnlyCheckBox_Checked (objectsender, System.Windows.RoutedEventArgse) { VfxCheckBoxCheckBox = (VfxCheckBox)sender; _fox.Do("ChangeReadOnly", xpgfPageFramePage1txtCustomername,CheckBox.IsChecked); }
CheckBoxsteuert TextBox.IsReadOnly • VFP GUINEU Code: FUNCTION setreadonly LPARAMETERS toControl toControl.IsReadOnly = .T.
GUINEU berechnet Lieferdatum • XAML Code: <VfxObject:VfxDatePickerSelectedDate="{Binding Path=Orders.CurrentItem.orderdate, Mode=Twoway}„ x:Name="xpgfPageFramePage1cntOrderdate„LostFocus= "xpgfPageFramePage1txtOrderdate_LostFocus"> </VfxObject:VfxDatePicker> <TextBox Name="txtDelivery" />
GUINEU berechnet Lieferdatum • C# Code: private voidxpgfPageFramePage1txtOrderdate_LostFocus (objectsender, System.Windows.RoutedEventArgs e) { OnEdit(); varorderDate = ((orders) ViewModel.WorkAliasCollection.CurrentItem).orderdate; txtDelivery.Text= _fox.Do("Lieferdatum", orderDate); }
GUINEU berechnet Lieferdatum • VFP GUINEU Code: Procedure Lieferdatum (ttOrderDate) LocalldOrder, ldLiefer ldOrder = Ttod(m.ttOrderDate) ldLiefer= ldOrder + 3 && drei Tage Lieferfrist Do case Case Dow(m.ldLiefer,2) == 6 && Samstag ldLiefer= m.ldLiefer + 2 && drauffolgender Montag Case Dow(m.ldLiefer,2) == 7 && Sonntag ldLiefer= m.ldLiefer + 1 && drauffolgender Montag EndCase Return ldLiefer
Speichern aus GUINEU • XAML Code: <VfxObject:VfxButton Content=“Speichern“ Click="vfxButton1_Click" />
Speichern aus GUINEU • C# Code: private void vfxButton1_Click(object sender, System.Windows.RoutedEventArgs e) { boolreturnvalue; returnvalue= _fox.Do("Speichern"); if (returnvalue) this.OnSave(); }
Speichern aus GUINEU • VFP GUINEU Code: FUNCTION Speichern * BeliebigeGeschäftslogik RETURN .T.
GUINEU • Beispiele in VFPizza • Kunden GUINEU • Aufträge GUINEU • Eigenschaft abfragen • Eigenschaft setzen • Speichern (indirekt, weil in C#)
Vielen Dank undviel Spaß mit GUINEU wünschenVenelina & Uwe