MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_01C94422.1D3F3BF0" Ce document est une page Web à fichier unique, ou fichier archive Web. Si ce message est affiché, votre navigateur ou votre éditeur ne prend pas en charge les fichiers archives Web. Téléchargez un navigateur qui prend en charge les archives Web, par exemple Windows® Internet Explorer®. ------=_NextPart_01C94422.1D3F3BF0 Content-Location: file:///C:/23745650/Interop.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
Intégrer des Winforms .Net dans Visual FoxPro
Dans cet article, Craig Berntson nous donne bien plu= s que des « recettes » ; il nous explique tout d’abord pourquoi et comment fonctionne l’interopérabilité entre .Net et VFP.
Ensuite, Craig nous propose quatre réalisations :
Le premier exercice est un « Hello
World » qui nous p=
ermet de lancer un form .Net depuis VFP=
, et
de déclencher un MessageBox VFP depuis ce form .Net.
Nous découvrons le B.A.-BA de l’interop, prenez le temps de fa=
ire
et refaire cet exercice en entier, il vous apprendra beaucoup !
Mais dans le deuxième exercice, Craig
nous entraine un peu plus loin : nous apprenons maintenant à tr=
ansmettre
des données entre .Net et VFP. Je t’envoie un RecordSet, tu
m’envoies un cursor… et on se comprend !
Bien évidemment, c’est ce point-là qui m’a
accroché, c’est là que je vois le plus de
possibilités dans une démarche de migration.
Dans le troisième exercice, Craig nous
résume la création de contrôles utilisateurs
personnalisés en .Net et leur utilisation en tant qu’ActiveX d=
ans
VFP.
Si vous avez déjà lu les articles de Bernard Bout sur ce suje=
t,
vous connaissez le contenu exposé.
Dans le dernier exercice, nous apprenons
à intégrer du code XAML de WPF (Windows Presentation Foundati=
on)
dans un form .Net 2.0, et à lancer ce form depuis VFP.
Les aspects « cosmétiques » n’éta=
nt
pas mon principal point d’intérêt, je vous laisse seuls
juges de l’importance de cette étude.
Afin de faciliter la réalisation des exercices proposés, voici quelque conseils, trucs et astuces :
Exercice n°2 (transmission de data)
&nb=
sp;
L’article ne dit rien sur le form de
login, commenter les lignes pour que l’exemple fonctionne, et forcer =
la
valeur de lcLoginResult et lcUserName
*!* &=
nbsp; loLogin
=3D Newobject("frmLogin", "classes\MyCompany")
*!* loLogin.=
Show()
*!* lcLoginR=
esult
=3D loLogin.cHowExit
*!* lcUserna=
me =3D
loLogin.cUsername
*!* lcPasswo=
rd =3D
loLogin.cPassword
*!* loLogin =
=3D Null
lcLoginResult=3D'OK'
lcUsername=3D'MICHEL'
&nb= sp; Commencer par créer le projet VB.net<= /p>
Référencer =
ADODB en
cliquant droit sur Références → ajouter une
référence → choisir Microsoft ActiveX Data Objects 2.8
Library dans la liste des objets COM
=
&nb= sp; Si on est en OPTION STRICT ON, il faut force= r le type sur toutes les expressions dans la méthode SetupData()
<InteropFormMethod()>
_
Public Sub
SetupData()
' Sets control values from Order info.
OrderData =3D CType(My.InteropToolbox.Gl=
obals("rsOrderDetail"), Recordset)
txtProductNo.Text =3D CStr(OrderData.Fields("ProductID").Value)
txtOrderDate.Text =3D CStr(OrderData.Fields("OrderDate").Value)
txtQuantity.Text =3D CStr(OrderData.Fields("Qu=
antity").Value)
txtCustomerID.Text =3D CStr(OrderData.Fields("CustomerID").Value)
txtShippedDate.Text =3D CStr(OrderData.Fields("ShippedDate").Value)
End Sub
Et dans la méthode= lnkProductDetails_LinkClicked(…)
Private Sub lnkProductDetails_LinkClicked(ByVal sender As
System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles
lnkProductDetails.LinkClicked
RaiseEvent ViewProductDetailsEvent(CInt(txt=
ProductNo.Text))
End Sub
&nb= sp; Ne pas oublier de générer l= 217; InteropForm Wrapper Class comme décrit dans le premier exercice, et = de compiler le projet.
&nb= sp; Et suivre également le mode opératoire de création du prg par utilisation du nœud IOrdersDetailEventSink de l’objet OrderDetails récupéré dans le tlb avec l’explorateur d’objets.
Dans le form VFP ProductsDetails, ne pas oub= lier d’enlever le nom de l’alias dans le controlsource des textbox (= ne mettre que le nom de champ)
Exercice n°4 (XAML)
&nb= sp; Le projet 15puzzle à utiliser est téléchargeable ici, et se trouvera dans le dossier Demos après dézippage
&nb= sp; Si vous ne savez pas où se trouvent l= es assemblies .Net 3.0 à référencer dans le projet, repérez-les dans les références du projet 15puzzle, cliquez-droit dessus pour demander à les afficher dans l’explorateur d’objet, vous pouvez alors copier le chemin compl= et de la dll depuis le panneau inférieur droit de cet explorateur. Pour ajouter cette référence, activer l’onglet « parcourir » de la boite de dialogue « Ajouter une référence » ; il suf= fit alors de coller dans la zone « Nom du fichier ».
&nb= sp; Pour l’enregistrement des assemblies a= vec Regasm (les messages d’avertissement demandant une signature), cf. le dernier article de Bernard Bout.