Vfx13 silverlight workshop
Download
1 / 149

VFX13 Silverlight Workshop - PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on

VFX13 Silverlight Workshop. Venelina Jordanova [email protected] Uwe Habermann [email protected] Wer spricht denn da?. Venelina Jordanova Master Degree in CS FoxPro Entwicklerin seit FPD 2.0 MCP für SQL Server und Application Architecture. Uwe Habermann Diplom-Informatiker

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' VFX13 Silverlight Workshop' - kaylee


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Vfx13 silverlight workshop
VFX13 Silverlight Workshop

VenelinaJordanova

[email protected]

Uwe Habermann

[email protected]


Wer spricht denn da
Wer spricht denn da?

  • Venelina Jordanova

  • Master Degree in CS

  • FoxPro Entwicklerin seit FPD 2.0

  • MCP für SQL Server und Application Architecture

  • Uwe Habermann

  • Diplom-Informatiker

  • FoxPro Entwicklerseit FPW 2.5

  • MCP für Visual FoxPro

  • Uwe Habermann

  • Diplom-Informatiker

  • FoxPro Entwicklerseit FPW 2.5

  • MCP für Visual FoxPro

  • Venelina Jordanova

  • Master Degree in CS

  • FoxPro Entwicklerin seit FPD 2.0

  • MCP für SQL Server und Application Architecture


V u ltd we and you
V&U Ltd. – WeandYou

  • Geschäftsführer: Venelina & Uwe

  • Entwicklung in Varna, Bulgarien

  • Projekte mit VFP und Silverlight

    • Visual Extend, Silverswitch

  • Hohe Qualität zu günstigen Preisen

  • Microsoft Silverlight Partner


Was steht an
Was steht an?

  • Donnerstag

  • 09:00 – 09:15 Begrüßung, Kaffee

  • 09:15 – 11:00

  • 11:15 – 13:00

  • 14:15 – 16:00

  • 16:15 – 18:00


Was steht an1
Was steht an?

  • Freitag

  • 09:00 – 09:15 Begrüßung, Kaffee

  • 09:15 – 11:00

  • 11:15 – 13:00

  • 14:15 – 16:00

  • 16:15 – 18:00


Was steht an2
Was steht an?

  • Vorbereitung von VFX für VFP Anwendungen auf die Migration nach Silverswitch

  • Migration einer VFX Beispielanwendung

  • Datenzugriff in Silverlight Anwendungen

  • Bearbeitung von Silverlight Formularen in Visual Studio


Was steht an3
Was steht an?

  • Geschäftslogik mit GUINEU implementieren

  • Verwendung eines VFP COM Servers

  • Eigenschaften des Anwendungsobjekts

  • Eigenschaften von Formularen

  • Programmierung mit C#


Was steht an4
Was steht an?

  • Silverlight Anwendungen als Desktop Anwendungen einsetzen

  • Veröffentlichung der Anwendung auf einem Internet Server


Installation
Installation

  • Visual FoxPro 9, VFX 13 Build 1707

  • Visual Web Developer 2010 Expressoder Visual Studio 2010

  • Silverlight 4 Tools

  • Silverlight 4 Toolkit

  • WCF RIA Services 1 SP 1

  • Silverswitch 1 Build 0515

  • Ggf. SQL Server Management Studio


Installation1
Installation

  • Get Silverswitch aus VFX 13 Menü

  • Ausführung

  • Startseite einstellen

  • „Silverswitch Version 01.00.0515“


Silverswitch
Silverswitch

  • Rapid Application Development Entwicklungsumgebung für Silverlight

    • Silverswitch.sln

  • Migration von VFP Anwendungen

    • VFX – Silverlight Wizard

  • Visual Extend für VFP in C# nachgebaut


Silverswitch1
Silverswitch

  • Datenbankformate

    • VFP Datenbanken

    • SQL Server Datenbanken

    • MySQL, ADS, DB2, Oracle, …


Silverswitch2
Silverswitch

  • Programmierung

    • C#

    • VFP auf der Serverseite mit COM Server

      • Komfortabler Methodenaufruf auch von der Clientseite

    • VFP auf der Clientseite mit GUINEU

      • Ausführung auch auf Mac und künftigen Plattformen


Silverswitch was ist drin
SilverswitchWas ist drin?

  • Vorlageanwendung Silverswitch.sln

  • Startseite

  • Assistenten

    • Update Project

  • VFX – Silverlight Wizard

    • In VFX für VFP enthalten


Das erste silverswitch projekt
Das erste Silverswitch Projekt

  • Neues Projekt

  • Silverswitch, Silverswitch

  • Nicht ausführen!

  • Nicht erstellen!


Voraussetzungen f r den vfx silverlight wizard
Voraussetzungen für denVFX – Silverlight Wizard

  • Datenbank

    • Primärschlüssel für alle Tabellen

    • Empfohlen: Primärindex auf Integer Autoinc

  • Datenumgebung

    • Tabellen

    • Cursoradapter

    • Keine Ansichten

    • Kein programmatisches Öffnen von Tabellen


Voraussetzungen f r den vfx silverlight wizard1
Voraussetzungen für denVFX – Silverlight Wizard

  • Alle Steuerelemente im Formular

    • Kein nachträgliches instanziieren von Objekten zur Laufzeit

  • VFP Projekte

    • Basisklassen der Steuerelemente werden migriert

  • VFX Projekte

    • VFX Klassen der Steuerelemente werden migriert


Voraussetzungen f r den vfx silverlight wizard2
Voraussetzungen für denVFX – Silverlight Wizard

  • Code in VfxBusinessLogic.vcx

    • wird in COM Server migriert


Vfx silverlight wizard
VFX – Silverlight Wizard

  • VFPizza13 in VFP öffnen

  • VFX – Silverlight Wizard starten


Vfx silverlight wizard1
VFX – Silverlight Wizard

  • Was macht dieser Assistent?

  • Erläuterung

  • VFP COM Server wird erstellt

  • Administratorrechte erforderlich!


Vfx silverlight wizard2
VFX – Silverlight Wizard

  • Auswahl einer Silverswitch Projektmappe


Vfx silverlight wizard3
VFX – Silverlight Wizard

  • Datenhaltung

  • ADO.NET Entity Data Model erstellen

  • Domänendienst erstellen

  • VFP COM Server erstellen und registrieren


Vfx silverlight wizard4
VFX – Silverlight Wizard

  • Einstellungen des Anwendungsobjekts

  • VFX Formulare in Vfxfopen eintragen


Vfx silverlight wizard5
VFX – Silverlight Wizard

  • Auswahl der Formulare

  • Als in das Projekt eingeschlossene Formulare werden standardmäßig migriert

  • VFX*.scx Formulare werden nicht migriert


Vfx silverlight wizard6
VFX – Silverlight Wizard

  • Projektnamen für Formulare

  • Formulare können beliebig in Projekten zusammengefasst werden

  • Optimierung der Projektgröße und damit der Downloadgröße und -zeit


Vfx silverlight wizard7
VFX – Silverlight Wizard

  • Auswahl der Formulareigenschaften

  • Gestaltung wie in VFP -> alle Eigenschaften übernehmen

  • Hard-codierte Eigenschaften können jedoch nicht von Designs überschrieben werden


Vfx silverlight wizard8
VFX – Silverlight Wizard

  • Auswahl der Berichte

  • Als in das Projekt eingeschlossene Berichte werden standardmäßig migriert


Vfx silverlight wizard9
VFX – Silverlight Wizard

  • Fertig!

  • ErfolgsmeldungoderProtokoll

  • Test!


Eigenschaften der silverswitch anwendung
Eigenschaften derSilverswitch Anwendung

  • Vorbereiteter Rahmen für die Anwendung

  • Begrüßungsbild

  • Anmeldedialog optional

  • Symbolleiste mit XAML Icons

  • Data-driven Öffnen-Dialog

  • Internet Anwendung

  • Intranet Anwendung


Eigenschaften der silverswitch anwendung1
Eigenschaften derSilverswitch Anwendung

  • Benutzeranmeldung

  • Lokalisierung zur Laufzeit

  • Benutzerverwaltung

  • Benutzerrechte

  • Benutzergruppen

  • MDI Benutzeroberfläche


Eigenschaften der generierten formulare
Eigenschaften der generierten Formulare

  • Autoedit

  • Neu, Ändern, Löschen, Speichern, Rückgängig

  • Navigation

  • Sortierung und inkrementelle Suche im DataGrid

  • Resizable, minimieren, maximieren


Eigenschaften der generierten formulare1
Eigenschaften der generierten Formulare

  • Parent/Child-Beziehungen

  • Behandlung von Aktualisierungskonflikten

  • Filterdialog


Eigenschaften der generierten berichte
Eigenschaften der generierten Berichte

  • Seitenkopf

  • Detailbereich

  • Seitenfuß


Eigenschaften der generierten berichte1
Eigenschaften der generierten Berichte

  • Bezeichnungen

  • Textfelder

  • Linien

  • Rechtecke

  • Abgerundete Rechtecke


Eigenschaften der generierten berichte2
Eigenschaften der generierten Berichte

  • Nicht migriert

    • Datenbindung von Bildern

    • PrintWhen

    • Code


Was macht der vfx silverlight wizard
Was macht der VFX – Silverlight Wizard?

  • Formular dem Projekt hinzufügen

  • Eintrag in Vfxfopen

  • Migration von Formularen

    • MVVM Model-View-ViewModel

    • Trennung von Design und Programmierung


Was macht der vfx silverlight wizard1
Was macht der VFX – Silverlight Wizard?

  • Beispiel

    • Customer.xaml

      • Layout

    • Customer.xaml.cs

      • Einstellungen

    • CustomerViewModel.cs

      • Für eigenen Code

    • CustomerViewModelBase.cs

      • Generierter Code


Was macht der vfx silverlight wizard2
Was macht der VFX – Silverlight Wizard?

  • Customer.xaml

    • Beschreibung der Benutzeroberfläche

    • Kann Animationen enthalten

    • Kann Verhalten enthalten

    • Bearbeitung mit Expression Blend möglich

    • Designer darf keine Steuerelemente entfernen

    • Designer darf keine Namen ändern


Was macht der vfx silverlight wizard3
Was macht der VFX – Silverlight Wizard?

  • Customer.xaml.cs

    • Code zur Instanziierung

    • Formulareigenschaften


Was macht der vfx silverlight wizard4
Was macht der VFX – Silverlight Wizard?

  • CustomerViewModel.cs

    • Eigener Code

    • Erweiterung der Funktionalität

    • Wird vom VFX – Silverlight Wizard nicht überschrieben!


Was macht der vfx silverlight wizard5
Was macht der VFX – Silverlight Wizard?

  • CustomerViewModelBase.cs

    • Generierter Code

    • Funktionalität des Formulars

    • Parent/Child Verhalten

    • Wird vom VFX – Silverlight Wizard überschrieben!


Was macht der vfx silverlight wizard6
Was macht der VFX – Silverlight Wizard?

  • Generiert VFP COM Server

    • Datenzugriff auf VFP Datenbankmit Cursoradaptern

    • Config.vfx mit vollständigem Pfad

      • Mit Manage Config.vfx prüfen!

    • VfxBusinessLogic.vcx


Datenzugriff
Datenzugriff

  • Silverswitch Client kommuniziert mit Domänendienst auf der Serverseite


Datenzugriff1
Datenzugriff

  • VFX – Silverlight Wizard generiert

    • Domänendienst

    • ADO.NET Entity Data Model

      • ADO.NET Entity Data Model Treiber stellt Verbindung zur Datenbank her

      • Verbindungszeichenkette in Web.Config im Projekt Silverswitch.Web

      • Inhalt von Web.config prüfen!


Datenzugriff2
Datenzugriff

  • VFX – Silverlight Wizard generiert

    • Domänendienst

    • VFP COM Server

      • Cursoradapter

      • VFP Datenbank

      • SQL Server Datenbank

      • Andere ODBC Datenquellen

      • Konfiguration in Config.vfx


Mandantenauswahl
Mandantenauswahl

  • Auswahl der Datenbankbeim Start

    • ZeigtVerbindungenausWeb.config

    • ZeigtVerbindungenausConfig.vfx

  • Anzeige, wennmehralseineDatenbankverfügbarist

  • Anzeige, wennBenutzeranmeldungerforderlichist

  • Anzeige, wennBenutzerangemeldetist und Benutzerwechselerfolgt


Anmeldeverhalten
Anmeldeverhalten

  • Keine Benutzeranmeldung

    • Nur erste Datenbank verfügbar

  • Optionale Benutzeranmeldung

    • Anwendung startet mit erster Datenbank

    • 1. Anmeldung erfolgt mit erster Datenbank

    • Folgeanmeldung zeigt Mandantenauswahl

  • Benutzeranmeldung erforderlich

    • Mandantenauswahl erscheint beim Start


Datenzugriff3
Datenzugriff

  • VFX-Anwendung und Silverswitch-Anwendung mit Zugriff auf die gleiche Datenbank starten

  • Aktualisierungskonflikte testen


Datenzugriff4
Datenzugriff

  • Kunden können mit VFX-Anwendung weiterarbeiten

  • Silverswitch-Anwendung läuft auf gleicher Datenbank


XAML

  • Extensible Application Markup Language

  • Sprache zur Beschreibung von Benutzeroberflächen

  • Verwendet für

    • Silverlight

    • Windows Presentation Foundation

  • Textformat wie XML


Xaml designer
XAML Designer

  • Visuelle Bearbeitung neu inVisual Studio 2010

  • Bearbeitung von XAML Code möglich

  • Bearbeitung im Eigenschaftsfenster


Xaml designer1
XAML Designer

  • Toolbox verwenden

    • Enthält Silverlight Basisklassen

    • Enthält Klassen aus geöffneter Projektmappe

    • automatisches Hinzufügen von Namespaces


Aufbau einer xaml datei
Aufbaueiner XAML Datei

  • Formularklasse VfxDataForm

    • .xaml + .xaml.cs

  • XML Namespaces

  • Ggf. Child Formulare

  • LayoutRoot

    • Äußerer sichtbarer Container

  • Steuerelemente


XAML

  • Ein Steuerelement muss keinen Namen haben

  • Ein Name ist nur erforderlich, wenn programmatisch darauf referenziert wird

  • Jeder Name muss in einer XAML Datei eindeutig sein

    • Flache Architektur

    • Keine Hierarchie


Steuerelemente
Steuerelemente

  • Viele VFP Steuerelemente ähnlich auch in Silverlight 4 verfügbar

    • TextBox

    • TextBlock (Label)

  • Weitere Steuerelemente in Silverlight 4 Toolkit

    • NumericUpDown (Spinner)

    • AutoCompleteBox (PickField)




Xaml steuerelement
XAML Steuerelement

<VfxObject:VfxTextBox

Text="{Binding Path=Customers.CurrentItem.customername, Mode=Twoway}"

InputMask="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

x:Name="xpgfPageFramePage1txtCustomername"

FontFamily="Arial"

FontSize="12"

MaxLength="50"

Height="24"

HorizontalAlignment="Left"

Margin="106,4,0,0"

Width="418"

TabIndex="2"

VerticalAlignment="Top"/>


Element zu element bindung
Element zu Element Bindung

  • Fast jede Eigenschaft kann an eine andere Eigenschaft gebunden werden


Element zu element bindung1
Element zu Element Bindung

  • Beispiel: Customers.xaml

  • Slider steuert Breite einer TextBox

    <VfxObject:VfxSlider Name="vfxSlider1“

    Maximum="418“

    Minimum="20" />

  • TextBox

    Width="{Binding ElementName=vfxSlider1, Path=Value}"


Brauche ich eine controlsource
Brauche ich eine Controlsource?


Datenbindung
Datenbindung

  • KeineControlsource

  • An (fast) jedeEigenschaftmöglich

    Text="{BindingPath=Customers.CurrentItem.customername,Mode=Twoway}"



Guineu
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


Guineu1
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


Guineu was kann man damit machen
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!


Guineu integration in silverswitch
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


Guineu2
GUINEU

  • Deklaration

    using VfxGuineuRuntime;

    private readonlyVfxGuineu _fox = new VfxGuineu("<Name>.FXP");


Guineu3
GUINEU

  • Funktionsaufruf

    _fox.Do("<Funktionsname>", <Parameter 1>, <Parameter 2>, …);

  • 1. Parameter ist Funktionsname

  • Folgende Parameter werden an die Funktionübergeben


Guineu4
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
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 starten1
VFP aus VWD starten

  • Projekt VfxGuineuRuntime

  • Ordner VFPCode

  • FXP Datei hinzufügen

    • Rechtsklick, Buildvorgang

    • Eingebettete Ressource


Checkbox steuert textbox isreadonly
CheckBoxsteuert TextBox.IsReadOnly

  • XAML Code:

    <VfxObject:VfxCheckBox

    Content="ReadOnly"

    Name="vfxReadOnlyCheckBox"

    Click="vfxReadOnlyCheckBox_Checked"/>


Checkbox steuert textbox isreadonly1
CheckBoxsteuert TextBox.IsReadOnly

  • C# Code:

    private voidvfxReadOnlyCheckBox_Checked (objectsender, System.Windows.RoutedEventArgse)

    {

    VfxCheckBoxCheckBox = (VfxCheckBox)sender;

    _fox.Do("ChangeReadOnly", xpgfPageFramePage1txtCustomername,CheckBox.IsChecked);

    }


Checkbox steuert textbox isreadonly2
CheckBoxsteuert TextBox.IsReadOnly

  • VFP GUINEU Code:

    FUNCTION ChangeReadOnly

    LPARAMETERS toControl, tlReadOnly

    toControl.IsReadOnly = tlReadOnly


Guineu berechnet lieferdatum
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 lieferdatum1
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 lieferdatum2
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
Speichern aus GUINEU

  • XAML Code:

    <VfxObject:VfxButton

    Content=“Speichern“

    Click="vfxButton1_Click" />


Speichern aus guineu1
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 guineu2
Speichern aus GUINEU

  • VFP GUINEU Code:

    FUNCTION Speichern

    * BeliebigeGeschäftslogik

    RETURN .T.


Guineu5
GUINEU

  • Beispiele in VFPizza

    • Kunden GUINEU

    • Aufträge GUINEU

  • Eigenschaft abfragen

  • Eigenschaft setzen

  • Speichern (indirekt, weil in C#)



Vfp com server
VFP COM Server

  • In jeder Silverlight Anwendung verfügbar

    • Browser

      • auf der Server Seite

    • OOB mit erhöhter Vertrauensstellung

      • auf der Server Seite

      • auf der Client Seite

  • Silverlight Client führt Methode in VFP COM Server aus


Vfp com server1
VFP COM Server

  • Ausführung aus FXP

  • Ausführung aus APP

  • Vorteile:

    • COM Server muss nicht neu registriert werden

    • IIS muss nicht neu gestartet werden


Vfp com server2
VFP COM Server

  • Datenzugriff

    • Cursoradapter

      • VFP Datenbank

      • SQL Datenbank

      • Alle ODBC Datenquellen

        • MySQL

        • Oracle

        • DB2

  • Verwendete Datenbank konfigurierbar


Vfp com server3
VFP COM Server

  • Geschäftslogik

    • Alles, was nicht visuell ist


Vfp com server4
VFP COM Server

  • DEFINE CLASS VFPizzaCOMDomainService AS Session OLEPUBLIC

  • Erstellen als „Multi-Thread COM Server (DLL)“

  • VFP9.exe muss explizit mit Administratorrechten ausgeführt werden!


Vfp com server5
VFP COM Server

DEFINE CLASS

VFPizzaCOMDomainService AS Session OLEPUBLIC

PROCEDURE GetDateTime

RETURN TRANSFORM(DATETIME())

ENDPROC


Vfp com server auf der server seite verwenden
VFP COM Server auf derServer Seite verwenden

  • „early binding“ in Visual Studio

  • COM Server muss zur Entwicklungszeit funktionsfähig sein

  • Verweis auf COM Server muss dem Server Projekt hinzugefügt werden


Action button
Action Button

  • Programmatischer Aufruf von COM Server Methode, Prozedur oder neue Objektinstanz von der Clientseite

  • Aufruf auch aus Button möglich

  • Übergabe mehrerer Parameter möglich

  • Übergabe von Daten als Parameter möglich


Action button1
Action Button

  • VFP Code

    • vfxbusinesslogic.vcx

    • cexample.businesslogicexample

      RETURN "This is the result of the business logic example."


Action button2
Action Button

  • Customers.XAML

    • VfxTextBlock hinzufügen

      <VfxObject:VfxTextBlock

      x:Name="lblActionResult" />


Action button3
Action Button

  • Customers.XAML

    • VfxActionButton hinzufügen

      <VfxControl:VfxActionButton

      x:Name="cmdAction"

      Content="Action"

      ProcedureName="cexample.businesslogicexample"

      OperationResultLoaded=

      "cmdAction_OperationResultLoaded" />


Action button4
Action Button

  • Customers.cs

    private voidcmdAction_OperationResultLoaded( objectsender, EventArgs e)

    {

    lblActionResult.Text = cmdAction.OperationResult.result.ToString();

    }


Action button umsatz
Action Button - Umsatz

  • Customers.XAML

    • VfxTextBlock hinzufügen

      <VfxObject:VfxTextBlock

      x:Name="lblUmsatz" />


Action button umsatz1
Action Button - Umsatz

  • Customers.XAML

    • VfxActionButton hinzufügen

      <VfxControl:VfxActionButton

      x:Name="cmdUmsatz" Content="Umsatz"

      ProcedureName="cexample.GetTurnover"

      ProcedureParameter="{Binding Path= Customers.CurrentItem.customerid, Mode=OneWay}"

      OperationResultLoaded=

      "cmdUmsatz_OperationResultLoaded" />


Action button umsatz2
Action Button - Umsatz

  • Customers.cs

    private voidcmdUmsatz_OperationResultLoaded( objectsender, EventArgs e)

    {

    decimalUmsatzResult = decimal.Parse(cmdUmsatz.OperationResult.result);

    lblUmatz.Text = UmsatzResult.ToString();

    }


Action button umsatz3
Action Button - Umsatz

  • VFP Code

    • vfxbusinesslogic.vcx

    • cexample.GetTurnover


Action button umsatz4
Action Button - Umsatz

LOCAL loOrdersCA, lnTotalSum, lnCustomerID

lnCustomerID = IIF(TYPE("tnCustomerID") = "N", tnCustomerID, 0)

loOrdersCA = NEWOBJECT("cadataaccess")

loOrdersCA.DataSourceType = This.oVFPCom.cDataSourceType

loOrdersCA.DataSource = This.oVFPCom.cDataSource

loOrdersCA.SelectCmd =

"Select OrderDetails.Quantity*OrderDetails.Price as TotalSum " + ;

"From OrderDetails " + ;

"JOIN Orders On OrderDetails.OrderID = Orders.OrderID " + ;

"WHERE Orders.CustomerID = ?lnCustomerID"

loOrdersCA.Alias = "crsorderdetails"

loOrdersCA.CursorFill()

lnTotalSum = crsOrderDetails.TotalSum

USE IN crsOrderDetails

RELEASE loOrdersCA

RETURN lnTotalSum


Aufruf einer vfp funktion
Aufruf einer VFP Funktion

private void xpgfPageFramePage1cmdProper_Click(

object sender, RoutedEventArgs e)

{

VfxSystemDomainContext context =

new VfxSystemDomainContext();

EventHandler handler =

new EventHandler(ExecuteVFPCommand_Completed);

var ExecuteVFPCommand =

context.ExecuteCommandService("proper",

xpgfPageFramePage1txtCustomername.Text.ToString(),

VfxAppObject.CurrentConnectionInfo.ClientName);

ExecuteVFPCommand.Completed += handler;

}


Aufruf einer vfp funktion1
Aufruf einer VFP Funktion

void ExecuteVFPCommand_Completed(

object sender, EventArgs e)

{

var result = sender as InvokeOperation<string>;

VfxCommandServiceResultBase ValueResult = (VfxCommandServiceResultBase)VfxSerializer.

DeserializeObject<VfxCommandServiceResultBase>

(result.Value);

lblResult.Text = ValueResult.CommandServiceInfo.result;

}



Eigenschaften1
Eigenschaften

  • Eigenschaften

    • Anwendungsobjekt

    • Formulare

  • Zahlreiche Eigenschaften aus VFX auch in Silverswitch verfügbar

  • Programmatisch zur Laufzeit ändern

    • C#

    • VFP


Eigenschaften des anwendungsobjekts
Eigenschaften des Anwendungsobjekts

  • Eigenschaften einstellen in

    • VfxApplication\Controls\VfxAppObject.cs

  • Aufzählungstypen

    • VfxApplicationBase\Controls\Enums.cs


Aufz hlungstypen des anwendungsobjekts
Aufzählungstypen des Anwendungsobjekts

  • LoginBehaviors

    • NoLogin = 0,

    • LoginAtStartup = 1,

    • OptionalLogin = 2

  • ErrorDetailLevels

    • MessageOnly = 0,

    • CallStackInformation,

    • FullDetailedInformation


Eigenschaften des anwendungsobjekts1
Eigenschaften des Anwendungsobjekts

  • ProgrammatischzurLaufzeitsetzen

    using VfxApplication;

    VfxAppObject.HideOpenDialog = true;


Eigenschaften von formularen
Eigenschaften von Formularen

  • Eigenschaften einstellen in

    • Formularname.xaml.cs


Eigenschaften von formularen1
Eigenschaften von Formularen

  • ProgrammatischzurLaufzeitsetzen

    AskToSave = true;



Warum c
Warum C#?

  • Als internationaler Industriestandard anerkannt von European Computer Manufacturers Association (ECMA)

  • Windows Phone 7


C#

  • Strong Typed

    • VFP ist weak Typed

  • Groß-/Kleinschreibung beachten

  • C# kann fast nichts

    • wird erst durch using stark

  • Using von Komponenten

    • aus .NET Framework

    • von Drittanbietern

    • aus eigenen Namespaces


Variablen
Variablen

  • Müssen deklariert werden

  • Typ nicht änderbar

  • Eine Variable ist ein Objekt

    • Eigenschaften

    • Methoden


Variablen1
Variablen

  • VFP

    * Deklaration nicht erforderlich

    meineZahl= 3

    meineZahl= meineZahl+ 1

    meineZahl= "kein Problem"

    * Hier kommt es zu einem Laufzeitfehler

    meineZahl = meineZahl + 1


Variablen2
Variablen

  • C#

    intmeineZahl;

    meineZahl= 3;

    meineZahl++;

    // Fehler wird zur Entwicklungszeit

    // erkannt:

    // meineZahl= „nicht zulässig";

    MessageBox.Show(meineZahl.ToString());


Gro kleinschreibung beachten
Groß-/Kleinschreibung beachten

  • VFP

    meineVariable= 3

    meineVariable= "Zeichenkette"

  • C#

    meineVariable = 3

    MeineVariable= "Zeichenkette"


Warum using
Warum using?

  • Deklarierung von

    • Komponenten des .NET Frameworks

    • von Drittanbietern

    • eigenen Namespaces

  • Vergleichbar mit DECLARE oder SET CLASSLIB TO in VFP


Warum using1
Warum using?

System.Windows.MessageBox.Show("Text");

oder

usingSystem.Windows;

MessageBox.Show("Text");


C#

  • Keine Daten

    • Keine Cursor

  • Nur Speicherstrukturen

    • Klassen für „Tabellenstruktur“

  • Keine Makros


C beispiele
C# Beispiele

  • Aus Workshop Doku

  • In CustomerCsharp


Mvvm beispiele
MVVM Beispiele

  • Customers.xaml.cs

    public Customers(boolautoLoadData)

    {

    InitializeComponent();

    InitializeData();

    InitializeDefaultValues();

    if (autoLoadData)

    {

    ViewModel.Reload();

    }

    ((CustomersViewModel)ViewModel).CanInsertOnInit();

    }


Mvvm beispiele1
MVVM Beispiele

  • CustomersViewModel.cs

    publicvoidCanInsertOnInit()

    {

    if (_form != null)

    {

    _form.CanInsert = !_form.CanInsert;

    VFXHelpers.VfxEventHelper.Instance.OnRefreshToolBar (_form, EventArgs.Empty);

    }

    }


Mvvm beispiele2
MVVM Beispiele

  • CustomersViewModel.cs

    publicvoidCanInsertOnInit()

    {

    if (_form != null)

    {

    _form.CanInsert = !_form.CanInsert;

    VFXHelpers.VfxEventHelper.Instance.OnRefreshToolBar (_form, EventArgs.Empty);

    }

    }

  • Test!


Mvvm beispiele3
MVVM Beispiele

  • Customers.xaml

    <VfxObject:VfxButton

    Content="Can Insert"

    Name="vfxButton1"

    Command="{Binding CanInsertCommand}" />


Mvvm beispiele4
MVVM Beispiele

  • CustomersViewModel.cs

    using System;

    ...

    publicSystem.Windows.Input.ICommandCanInsertCommand{ get; set; }

    ...

    publicCustomersViewModel(IDataFormPropertiesform: base(form)

    {

    CanInsertCommand = newVfxApplicationBase.Helpers.LambdaCommand<object>

    (CanInsert, CanInsertFunc);

    }


Mvvm beispiele5
MVVM Beispiele

  • CustomersViewModel.cs

    private voidCanInsert(objectobj)

    {

    if (_form != null)

    {

    _form.CanInsert = !_form.CanInsert;

    VFXHelpers.VfxEventHelper.Instance.OnRefreshToolBar (_form, EventArgs.Empty);

    }

    }


Mvvm beispiele6
MVVM Beispiele

  • CustomersViewModel.cs

    private boolCanInsertFunc(objectobj)

    {

    returntrue;

    }

  • Test


Asynchrone programmierung
Asynchrone Programmierung

  • Nachricht senden

  • Nicht(!) auf Antwort warten

  • Anderes Ereignis erhält Antwort


C#

  • Literatur zum Thema:

  • .NET for Visual FoxPro Developers

  • von Kevin McNeish

  • ISBN: 1-930919-30-1



Desktop anwendungen
Desktop-Anwendungen

  • Ausführung außerhalb des Browsers

    • Out-of-browser (OOB)

  • Projekt VfxLoader

    • Eigenschaften

    • „Ausführen außerhalb des Browsers aktivieren“

  • Viele Einstellmöglichkeiten

  • Testen!


H here vertrauensstellung
Höhere Vertrauensstellung

  • „Out-of-Browser-Einstellungen“

  • „Bei Ausführung außerhalb des Browsers höhere Vertrauensstellung fordern“


H here vertrauensstellung1
Höhere Vertrauensstellung

  • Läuft nicht im Samdkasten des Browsers

  • OLE Automatisierung

  • Verwendung von COM Server

  • Zugriff auf das Dateisystem


Installation oob
Installation OOB

  • Kontextmenü

    • „… auf diesem Computer installieren“

  • Sicherheitswarnung

    • Startmenü

    • Desktop

  • Freundlicher Dialog bei zertifizierten Anwendungen

    • Firmenname

    • Firmenlogo


Zertifizierung
Zertifizierung

  • Kostenlos möglich

    • www.openssl.org


Aktualisierung
Aktualisierung

  • Automatisch beim Anwendungsstart

  • Möglich jedoch nur mit zertifizierten Anwendungen!


Vollbildmodus
Vollbildmodus

  • Außerhalb des Browsers kann eine Anwendung im Vollbildmodus ausgeführt werden

    • Symbol in der Symbolleiste


Out of browser
Out-of-Browser

  • Programmatischer Test

    if (App.Current.IsRunningOutOfBrowser)

    {

    MessageBox.Show("OOB");

    }

    else

    MessageBox.Show("im Browser");

  • Demo


Out of browser1
Out-of-Browser

if (App.Current.HasElevatedPermissions)

MessageBox.Show( "ErhöhteVertrauensstellung");

else

MessageBox.Show("Sandbox");

  • Demo


Debugging von oob anwendungen
Debugging von OOB Anwendungen

  • Server (.Web) Projekt als Startprojekt einstellen

    • <Projekt>TestPage.html als Startseite einstellen

    • Ausführen und als „out-of-browser“ installieren

  • Client Projekt als Startprojekt einstellen

    • Eigenschaften, Seite Debuggen

      Out-of-browser application


Installation ohne browser
Installation ohne Browser

  • Silverlight Launcher

    • Windows 32 bitC:\Program Files\Microsoft Silverlight\sllauncher.exe

    • Windows 64 bitC:\Program Files (x86)\Microsoft Silverlight\sllauncher.exe

  • Parameter

    • /install:”path-toXAP-File”

    • /origin:”URI-to-origin”

    • /shortcut:desktop+startmenu

    • /overwrite


  • Installation ohne browser1
    Installation ohne Browser

    • Beispiel

      C:\Program Files\Microsoft Silverlight\sllauncher.exe /install:”VFPizza.xap”

      /origin:”http://www.dfpug.net/VFPizza.xap”

      /shortcut:desktop+startmenu

      /overwrite


    Distribution und installation desktop anwendungen
    Distribution und InstallationDesktop Anwendungen

    • Installationspaket für Desktop Anwendungen erstellen

    • IExpress.exe

      • Mit Administratorrechten starten

  • Batch Datei mit Installationsaufruf erstellen

  • Batch Datei und XAP Datei hinzufügen

  • Batch Datei soll ausgeführt werden


  • Ver ffentlichung
    Veröffentlichung

    • Assistent in VWD

    • Rechtsklick auf das Projekt Silverswitch.Web

    • „Veröffentlichen“


    Web ver ffentlichen
    Web veröffentlichen

    • Dateisystem

      • Alle Dateien werden in Zielordner kopiert

    • FTP

      • Möglich, wenn Zugang vorhanden

    • COM Server muss registriert werden!

    • Web.config anpassen

    • Config.vfx anpassen


    Wo l uft die anwendung
    Wo läuft die Anwendung?

    • Mac

      • Safari

      • Firefox

      • Chrome

      • Opera

    • Windows

      • Internet-Explorer

      • Firefox

      • Chrome

      • Opera




    Vielen dank und viel spa mit vfp und silverswitch
    Vielen Dank und viel Spaßmit VFP und Silverswitch

    wünschenVenelina & Uwe


    ad