Retour au sommaire

SourceServer
ForumServer

DesignServer

Accueil CanalOpenSource


Liens :

www.pmarty.com
www.4D.fr
www.fyi.4D.fr
www.ajar.ch
www.4DToday.com

 

Les documents liés au contact

Dernière étape de la construction de cette gestion de contact, la possibilité de lier des documents, notes ou lettres, voir des photos, en utilisant la table Data et le formulaire DataEntry de cette table. Nous allons brancher l'interface de la table Contact sur la définition d'interface utilisateur xShell.

Ouvrez l'éditeur d'interface utilisateur

Si ce n'est pas la première dans la liste, sélectionné la définition "xShell". Cliquez sur le bouton "Dupliquer". Ce bouton duplique la définition courante. Saisissez dans le champ Nom de l'interface "Def_Document". C'est la définition qui va être chargée à partir de la fiche du contact lors de l'ajout ou du double clic.

Ne changez rien sur la page "Liste". Passez directement sur la page "Saisie". Dans le champ "Sur chargement" tapez le nom de la méthode Document_SaisieSurChargement que vous allez créer ensuite. Voici le code de cette méthode:


Document_SaisieSurChargement

LECTURE SEULEMENT([Contact])

Si (Non(o ("Theme";o Exist )->))
   rcd_SelectAll (<>ptrIndex)
   $ptr:=rcd_GetFieldPointer (<>ptrIndex;rcdDataValue )
   rcd_GetIndexByDataName (rcd_GetDataName ;"French";Opt )
   rcd_SearchIndex ("Theme")
   $ptr:=rcd_GetFieldPointer (<>ptrIndex;rcdDataValue )
   $ptrArray:=o ("Theme";Est un tableau texte )
   VALEURS DISTINCTES($ptr->;$ptrArray->)
Fin de si

  `________________________________________________________________________________
  `declaration des boutons de saisie [data]EntryData
fop_Declare ("@bdone";Vrai)
fop_Declare ("ligne3";Vrai)
fop_Declare ("ligne4";Vrai)
fop_Declare ("@bfirst";Vrai)
fop_Declare ("@bnext";Vrai)
fop_Declare ("@bprevious";Vrai)
fop_Declare ("@blast";Vrai)
fop_Declare ("write";Vrai)
fop_Declare ("write2";Faux)
fop_Declare ("cboxClassOnWrite@/hide";Vrai)
fop_Declare ("vTMessage";Vrai)

fop_Declare ("Séparateur2";Vrai)

fop_Declare ("DataOnglet";Faux)
fop_Declare ("alp_vlSubListEntry";Faux)
fop_Declare ("bDeleteSub alp_vlSubListEntry@";Faux)
fop_Declare ("bAddSub alp_vlSubListEntry@";Faux)
fop_Declare ("SepH";Faux)

Explorer ("OnLoadEntry")

Si (rcd_IsVirgen (rcd_CurrentDataTable))
   rcd_LinkData (->[Data];->[Contact])
   CHOIX VISIBLE(*;"bCancel@";Faux)
   CHOIX VISIBLE(*;"bDelete@";Faux)
   CHOIX VISIBLE(*;"bAddOnWrite@";Faux)
Sinon
   $l:=sch_ (->[Contact]Handle;[Data]Link)
    WR EXECUTER COMMANDE (wrt_PtrArea->;wr cmd mise à jour références )
   Si ($l=0)
      vtMessage:=str_Get ("Attention ! Ce document n'a pas de contact associé.")
   Fin de si
Fin de si

Cette méthode repique du code de la méthode Explorer qui gère l'affichage de la table Data et de la méthode uid_ . Lorsque le document est créé à partir du contact, une partie du code d'initialisation n'est pas appelé du fait qu'on passe directement en saisie. Ce code est celui qui se trouve avant la ligne Explorer ("OnLoadEntry").

Il faut initialiser le tableau de la liste hierarchique (Thème) qui est normalement construite sur l'ouverture de la liste. Ce tableau est utilisé dans la saisie pour classer le document en fonction d'un thème. C'est l'outil Tool_Class dont l'interface occupe la partie gauche de l'écran à coté de la zone 4D Write.

Il faut déclarer les boutons du formulaire [Data]DataEntry et les objets qui sont masqués ou déplacés selon le contexte. Cette déclaration est assurée par uid_ lors d'un appel classique (ouverture en liste, passage en page).

Après ce repiquage, le code de l'explorateur est appelé directement : Explorer ("OnLoadEntry"). Puis vient le test qui détermine si c'est un ajout de document. Dans ce cas, il faut lier le document au contact. Dans le cas contraire, il faut rechercher le contact lié au document. Si vous avez inserer des références à votre contact, comme le nom, l'adresse, il faut demander à 4D Write de mettre à jour ces références. wrt_PtrArea vous retourne un pointeur sur la zone 4D Write courante.

Vous allez ouvrir la méthode Explorer et repérer l'appel "OnLoadEntry". A la fin du code de ce cas, insérez le code :
$l:=sch_ (->[Contact]Handle;[Data]Link)
WR EXECUTER COMMANDE (wrt_PtrArea->;wr cmd mise à jour références )

Cela vous permettra de charger le contact si vous ouvrez un document depuis la liste, c'est-à-dire en choisissant Explorateur dans le menu Fichier.    

Vous êtes arrivé à la fin du développement de cette gestion de contacts. Vous pouvez télécharger le code de cette application pour vous éviter de le recopier.

 



Retour | Haut de page