Processus pour la ComboBox

De Wiki1000
Révision datée du 4 novembre 2017 à 08:30 par Syfre (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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.

<source lang='delphi'>Function getSelectedOID():String;</source>

Déclaration du rôle de navigation oidObjetSelectionne

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

<source lang='delphi'> //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; </source>

{{#if:Code métier|

{{#if:Code métier|— Code métier |}} — Développement DSM

|

{{#if:|— [[{{{1}}}]] |}} — Développement DSM

}}