1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
PROCEDURE DDrop_Fin(Lacher)// Traitement du "lâcher" sur un champ
// Lacher est une chaîne qui contient le nom du champ origine et du
// champ destination, sous la syntaxe suivante:
// origine->destination
// Par exemple:
// "TABLE1->SUPPRIME"
// Testez cette chaîne pour connaître le traitement à réaliser.
// Attention ! Dans le source ci-après, notez bien les
// signes d'indirection '{' '}'...
// sinon le drag and drop ne fonctionne pas !
Source,Dest sont des chaînes
xTypeChamp est un entier
// Décomposition du champ de Départ et du champ de Destination
// de la chaîne "Lacher"...
Source=Milieu(Lacher,1,Position(Lacher,"->")-1) // Source
Dest=Milieu(Lacher,Position(Lacher,"->")+2) // Destination
ValRécupérée est une chaîne // Valeur lue dans le TreeView
PosTAB est un entier // pour extraire les tabulations
// Récupération de l'option sélectionnée dans le Tree-View par la valeur de Source
ValRécupérée = {Source,indVariable}[{Source,indVariable}] // Attention aux signes d'indirection !
// Note : dans cette procédure, tous les éléments du tree-view sont acceptés.
// Si vous voulez restreindre le lâché en n'acceptant que les feuilles du
// tree-view source, vous devez tester si cette source est bien une feuille,
// avec le code ci-dessous :
// Si ArbreTypeElement(Source, ValRécupérée) <> aFeuille alors
// RETOUR
// Fin
// Récupération du type du champ Destination...
xTypeChamp= {Dest,indChamp}..Type
// Info(xTypeChamp)
// Traitement selon le type de champ
SELON xTypeChamp
CAS 4 // Champ Libellé, on remplace les TAB d'origine
// par des espaces, pour conserver l'intégralité du noeud et de la feuille
ValRécupérée=Remplace(ValRécupérée,TAB," ")
{Dest,indChamp}..Libellé=ValRécupérée
CAS 11 // Champ Tree-View
// Si on a sélectionné un noeud, on l'ajoute avec son contenu...
SI ArbreTypeElément(Source,ValRécupérée) <> aFeuille ALORS
ArbreAjoute(Dest,ValRécupérée)
// on déroule le noeud pour afficher son contenu...
ArbreDéroule(Dest,ValRécupérée)
SINON // on ajoute l'item. Si le noeud existe déjà, mais pas la
// feuille correspondant à ce noeud, l'item sera ajouté...
ArbreAjoute(Dest,ValRécupérée)
// on déroule le noeud pour afficher son contenu...
ArbreDéroule(Dest,ValRécupérée)
FIN
CAS 13 // Champ Sélecteur
ValRécupérée=Remplace(ValRécupérée,TAB," ")
{Dest,indChamp}..Etat=Invisible
{Dest,indChamp}[1]..Libellé=ValRécupérée
{Dest,indChamp}..Etat=Actif
CAS 14 // Champ Interrupteur
ValRécupérée=Remplace(ValRécupérée,TAB," ")
{Dest,indChamp}..Etat=Invisible
{Dest,indChamp}[1]..Libellé=ValRécupérée
{Dest,indChamp}..Etat=Actif
CAS 16 // Champ Ombre floue
ValRécupérée=Remplace(ValRécupérée,TAB," ")
{Dest,indChamp}..Libellé=ValRécupérée
CAS 256 // Champ Bouton
ValRécupérée=Remplace(ValRécupérée,TAB," ")
{Dest,indChamp}..Libellé=ValRécupérée
CAS 512 // Champ table mémoire, ou un champ de saisie Texte
ValRécupérée=Remplace(ValRécupérée,TAB," ")
// On différencie le traitement entre la Table et
// le champ de saisie par leurs noms, le traitement
// étant différent pour la table et le champ de saisie
SI Dest="VEHICULE"
// Ajout d'une ligne vide à la table
TableAjoute("TABLE01","")
// Récupération de la ligne vide en cours
nIndice est un entier =TableOccurrence("TABLE01")
TableModifie(Dest,ValRécupérée,nIndice)
SINON // Champ "SAISIE1"
{Dest,indVariable}=ValRécupérée
FIN
CAS 1024 // Champ Liste, on remplace les TAB d'origine
// par des RC pour conserver l'arborescence du TV...
ValRécupérée=Remplace(ValRécupérée,TAB,RC)
ListeAjoute(Dest,ValRécupérée)
CAS 2048 // Champ Combo, on remplace les TAB d'origine
// par " - " pour l'affichage dans la combo
ValRécupérée=Remplace(ValRécupérée,TAB," - ")
ListeAjoute(Dest,ValRécupérée)
{Dest,indChamp}=1
AUTRES CAS
RETOUR
FIN |
Partager