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

 

La liste, la ligne de menu, l'interface utilisateur

Pour pouvoir consulter la liste des rendez-vous, nous allons créer une nouvelle définition de liste et de champs, modifier le menu Fichier pour afficher la liste des rendez-vous et créer une nouvelle définition d'interface utilisateur avec les méthodes nécessaires.

Ouvrez l'éditeur de champs et de liste

Créez une nouvelle définition, appelez-la RDV. Sur la page Définition des champs, positionnez vous sur la table RDV et enlevez les champs 4 champs interne de xShell, l'utilisateur n'a pas besoin de les voir. Passez sur l'onglet Définition des listes et choisissez vos colonnes. Cochez "Double cliquable" et dans le champ Sur double clic souris tapez "RDV_SurDoubleClicEnListe". C'est une nouvelle méthode que vous créez tout de suite après.

Sélectionnez le champ Heure dans la liste des colonnes et dans le champ "Format d'affichage" tapez "&/2". Ce format permet d'avoir un affichage des heures selon le format d'affichage de 4D, c'est-à-dire H mn. Le & et le / sont indispensable pour indiquer à AreaList Pro le type de données qu'il doit afficher.

Mettez le numéro de colonne de l'heure des rendez-vous dans le champ "Tri sur la colonne" pour que la liste des rendez-vous soient triés par défaut par l'heure.
Enregistrez votre défnition et refermer l'éditeur.


RDV_SurDoubleClicEnListe

La liste des rendez-vous qui va s'afficher dans le formulaire malp_ListH va être longue et la fenêtre va être dimenssionnée à son maximum. Par contre, le formulaire de saisie d'un rendez-vous est tout petit. Pour accorder ces deux tailles de formulaire, le rendez-vous va être ouvert dans un autre process, comme dans la fiche du contact.

rcd_CopySelection (->[RDV];"RDVSelectionSurListe")
LIBERER ENREGISTREMENT([RDV])
frm_DefineExecuteForList (OnActivate ;"RDV_ListeSurActivation"))
o ("RDVNumProcess";Est un entier )->:=uid_ (Launch +OnInputLoad ;"Def_RendezVous";"RDVSelectionSurListe";"cboxReadWrite:="+Chaine(cboxReadWrite))


RDV_ListeSurActivation

Cette méthode est mise en place par la méthode précédente, elle a pour but, lorsqu'un rendez-vous est ouvert de rafraichir la liste lorsqu'elle passe au premier plan. Elle se désactive lorsque la consultation des rendez-vous se referme.

alp_UpDate
C_ENTIER LONG($origine;$uniqueID)
C_BOOLEEN($procVisible)
INFORMATIONS PROCESS(o ("RDVNumProcess")->;$procNom;$procStatut;$procTemps;$procVisible;$uniqueID;$origine)

Si ($procStatut=Détruit )
   frm_DefineExecuteForList(OnActivate ;"")
Fin de si



Ouvrez l'éditeur de menus

Dans le menu Fichier, ajouter une ligne, appelez-la "Rendez-vous", placez-la en dessous de "Contact". Donnez lui son libellé français, cochez "Faire suivre d'une ligne séparatrice" et dans le champ Executer la méthode écrivez "uid_("Def_RDVListe")".

Enregistrez votre définition et cliquez sur l'écran d'accueil en maintenant la touche Majuscule enfoncée pour forcer la mise à jour du menu sur activation.


Ouvrez l'éditeur d'interface utilisateur

Créez une nouvelle définition appelée "Def_RDVListe".
Sur l'onglet Liste, renseignez les champs suivants :
Nom de donnée : !ctc
Table de type Data : RDV
Formulaire liste : malp_ListH
Titre de fenêtre : Rendez-vous
Définition de liste et champs : RDV
Barre de menus : Default
Liste hiérachique : RDV_ListeH
Sur chargement : RDV_SurChargement

Les méthodes RDV_ListH et RDV_SurChargement sont à créer. S'ajoute à cette création la méthode RDV_ListHSurClicSouris.



RDV_ListH

rcd_GetIndexByDataName (rcd_GetDataName ;"French";Opt )
rcd_GetData (ptrData)

$ptr:=rcd_GetFieldPointer (ptrData;"Date")

$ptrArrayDate:=o ("Tableau Date";Est un tableau date )
VALEURS DISTINCTES($ptr->;$ptrArrayDate->)
TRIER TABLEAU($ptrArrayDate->;<)

$ptrArrayDateString:=o ("Tableau Date Chaine formatée";Est un tableau texte )
$arraySize:=Taille tableau($ptrArrayDate->)
TABLEAU TEXTE($ptrArrayDateString->;$arraySize)
Boucle ($i;1;$arraySize)
   $ptrArrayDateString->{$i}:=Chaine($ptrArrayDate->{$i};Format long )
Fin de boucle


TABLEAU TEXTE(arr_DataList;1)
arr_DataList{1}:="Dates RDV"

hls_SetParam
hls_SetOnClic ("RDV_ListHSurClicSouris")
C_ENTIER LONG(hls_vl1;hls_vl2;hls_vl3)
hls_vl1:=0
hls_vl2:=0
hls_vl3:=0
hls_SetParam (Vrai;1;15446)
hls_Set (->hls_vl2;$ptrArrayDateString)
hls_SetParam (Vrai;1;15448)
hls_Set (->hls_vl1;->arr_DataList{1};->Refliste;->hls_vl2;Vrai)
REDESSINER LISTE(hls_vl1)
CHOIX SAISISSABLE(hls_vl1;Faux)

SELECTIONNER ELEMENT(hls_vl1;2)
hls_SetParam (Vrai;1;15446)



RDV_ListHSurClicSouris


rcd_CloseListTrash
rcd_GetIndexByDataName (rcd_GetDataName ;"French";Opt )
rcd_GetData (ptrData)

$List:=hls_GetText (->hls_vl1)
Si ($List#arr_DataList{1})  `
   $x:=Chercher dans tableau(o ("Tableau Date Chaine formatée")->;$List)
      Si ($x#-1)
         $ptrArrayDate:=o ("Tableau Date")
         sch_ (rcd_GetFieldPointer (ptrData;"Date");Chaine($ptrArrayDate->{$x});"=";Opt )
      Fin de si
Fin de si

alp_UpDate (OnSelection )
uid_SetWndStatus (str_Get ("RecordNumberInList")+Chaine(Enregistrements trouves(rcd_CurrentDataTable->)))



RDV_SurChargement

rcd_GetIndexByDataName (rcd_GetDataName ;"French";Opt )
rcd_GetData (ptrData)

$List:=hls_GetText (->hls_vl1)
Si ($List#arr_DataList{1})  `
   $x:=Chercher dans tableau(o ("Tableau Date Chaine formatée")->;$List)
      Si ($x#-1)
         $ptrArrayDate:=o ("Tableau Date")
         sch_ (rcd_GetFieldPointer (ptrData;"Date");Chaine($ptrArrayDate->{$x});"=";Opt )
      Fin de si
Fin de si

alp_UpDate (OnSelection )
uid_SetWndStatus (str_Get ("RecordNumberInList")+Chaine(Enregistrements trouves(rcd_CurrentDataTable->)))

CHOIX VISIBLE(*;"@badd";Faux)




Sur l'onglet Saisie, remplissez les champs suivants :

Formulaire Page : EntryData
Barre de menus : Default
Sur chargement : RDV_SaisieSurChargement
Sur fermeture : uid_DataEntryOnCloseBox


Enregistrez votre définition et fermer les éditeurs, votre interface de saisie de rendez-vous et de consultation est prête.



Dans la logique de cette prise de rendez-vous, considérons qu'un rendez-vous est forcément lié à une personne. Pour simplifier le programme, il n'est possible de créer un rendez-vous qu'à partir de la fiche du contact. C'est pour cette raison que le bouton d'ajout a été supprimé dans le formulaire de saisie des rendez-vous et que dans la méthode RDV_SurChargement la dernière ligne masque le bouton d'ajout.


Il reste maintenant à donner la possibilité pour chaque contact de pouvoir saisir un ou plusieurs documents, notes ou lettres. Suite >>



Retour | Haut de page