|
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
|