Tips & Tricks pour les développeurs Visual FoxPro.
1- Surcharger les méthodes de formulaires créés avec l'assistant formulaire.
Si vous utilisez l'assistant formulaire, il peut vous arriver de redéfinir ou enrichir le comportement de certains contrôles, comme par exemple les actions effectuées par les boutons de navigations. Par exemple, vous souhaiter activer une zone de texte lorsque l'utilisateur clique sur ajouter (pour ajout d'enregistrement) Pour conserver le traitement par défaut de la méthode, vous devez invoquer la méthode correspondnate de la classe parent. Voici un exemple de code qui, lorsque l'utilisateur ajoute un enregistrement, une zone de texte TEXT1 est sélectionnée par programme.
&& Methode cndAdd.Click crée par l'assistant
&& Invoque la methode de la classe de base: TxtBtns
TxtBtns.CmdAdd::Click()
&& test du mode édition
IF This.Parent.EditMode = .T. Then
ThisForm.TEXT1.SetFocus
ENDIF
Si vous ajoutez des controles de type combobox, et que vous souhaitez calquer leur comportement sur les contrôles créés par l'assistant, vous pouvez placer le code suivant dans la méthode Refresh d'un formulaire. Dans l'exemple suivant, l'assistant a créé un controle Text1, vous voulez ajouter un combobox combo1 qui suive le comportement de Text1.
&& Form1.Refresh()
ThisForm.Combo1.ReadOnly = ThisForm.Text1.ReadOnly
ThisForm.Combo1.Enabled = ThisForm.Text1.Enabled
2- Créer une connection ODBC sur une base MS-Access en Visual FoxPro.
Le code suivant permet de créer un connection odbc automatiquement grace à la fonction SqlConfigDataSource de l'api ODBC. Vous pouvez récupérer le code suivant par un simple copier-coller:
* Création d'une connexion ODBC / MS-Access */
* 05/10/2005 Thierry Molinié
#DEFINE ODBC_ADD_SYS_DSN 1
DECLARE INTEGER SQLConfigDataSource IN odbccp32;
INTEGER hwndParent,;
INTEGER fRequest,;
STRING lpszDriver,;
STRING lpszAttributes
&& Récupérer le chemin d'accès à la base
sBasePath = ""
IF EMpty(sBasePath) Then
sBasePath= GETFILE('MDB','Base de données','O.K.',0,"Indiquez le chemin d'accès")
ENDIF
&& Ceci est un exemple, remplacer par vos paramètres
sServerName= ""
sDataBase = ""
sUser = "admin"
sPassWord = ""
sDSNName = "MY_ODBC_CONNECTION"
sOptions =""
* Creation Connection ODBC en auto
sDriver ="Microsoft Access Driver (*.mdb)"
sAttributes = "DSN=" + sDSNName + Chr(0)
sAttributes = sAttributes + "DBQ=" + sBasePath + Chr(0)
&& Si votre base est protégée par mot de passe
sAttributes = sAttributes + "Uid=admin" + Chr(0) + "pwd=XcW3d2qt7d8" + Chr(0)
sAttributes = sAttributes + Chr(0)
RetVal = 1
RetVal = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, sDriver, sAttributes)
IF RetVal > 0 Then
WAIT WINDOW "Source de donnée ODBC: " + sDSNName + " OK!" NOWAIT
ConnectionID = SQLCONNECT(sDSNName)
IF ConnectionID > 0 Then
= MessageBox("Connexion ODBC: "+ sDSNName + " établie avec succès!",0+48,'!')
=SQLDISCONNECT(ConnectionID)
ELSE
= MessageBox("Echec lors de la tentative de connexion ODBC sur "+ sDSNName ,0+16,"Erreur!")
CANCEL
ENDIF
ELSE
WAIT WINDOW "Erreur Appel API ODBC:"
ENDIF
*