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
*

 
[ Technologies ]
Copyright © QuadLoop 2006