Processus pour la ComboBox
Sommaire |
Introduction
Les processus ComboBox permet d'enrichir les fonctionnalités du produit quand c'est vraiment nécessaire.
Il suffit de disposer d'un écran et d'un processus qui sera le datasource qui gérera le traitement.
On notera qu'actuellement les arguments de l'écran ne sont pas évalués : il est donc inutile de les employer.
Déclaration de la fonction getSelectedOID qui retournera l'oid de l'objet sélectionné
Cette fonction publique est optionnelle, mais prioritaire quand elle est renseignée.
Function getSelectedOID():String;
Ce rôle est également optionnel et sert en second plan lorsque l'on n'a pas défini la fonction publique getSelectedOID.
Processus de traitement
Généralement, ce traitement créé une liste de vue représentant le combo lors du chargement.
Cette liste peut ensuite être accessible via un NDS depuis le data source du processus, que l'on utilise dans une grille pour la sélection.
A charge au processus d'entretenir le rôle optionnel oidObjetSelectionne de l'objet sélectionné afin de connaître la position.
Notons que sur ce processus, on devra spécifier au moins une fonction ou un rôle de navigation pour pouvoir obtenir l'oid de l'objet.
Les outils utilisent la fonction getSelectedOID pour obtenir un oid
Dans ce cas, la méthode peut faire ce qu'elle désire avant de rendre la main, y compris créée, modifier l'objet, ou retourner un oid vide.
Attention dans ce cas à ce que le contexte de transaction soit bien isolé.
Les outils utilisent l'attribut oidObjetSelectionne pour obtenir un oid
Si le rôle est renseigné, les outils connaissent l'oid de l'objet correspondant.
Exemple
//Function getSelectedOID():String; //Cette méthode est identifiée par les outils et récupère l'oid var vObjetCourant : TCCBS_ObjetReplique; begin if Assigned(objetSelectionne) then begin try vObjetCourant := ClassManager.FindObject(nomClasse,'(id=%1)','',false,[ObjetSelectionne.id]); WithP Private transaction do Begin if not Assigned(vObjetCourant) then begin //pas trouvé : il faut créer vObjetCourant := ClassManager.CreateInstance(nomClasse) AS TCCBS_ObjetReplique; vObjetCourant.id := ObjetSelectionne.id; end; //trouvé mais je mets à jour le code qui peut avoir changé vObjetCourant.caption := ObjetSelectionne.libelle; ActualiserDonneesComplementaires(vObjetCourant, ObjetSelectionne); End; except; raise; end; Result := vObjetCourant.oid; end else Result := ''; end;
— Code métier — Développement DSM —