4D View v16PV SET DRAG SIGNATURES |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D View v16
PV SET DRAG SIGNATURES
|
PV SET DRAG SIGNATURES ( zone ; tabSignatures ) | ||||||||
Paramètre | Type | Description | ||||||
zone | Entier long |
![]() |
Zone 4D View | |||||
tabSignatures | Tableau chaîne |
![]() |
Tableau des signatures | |||||
La commande PV FIXER SIGNATURES GLISSER définit le contenu du tableau tabSignatures comme signatures de "glisser" pour la zone.
Les signatures sont des chaînes alphanumériques dont le contenu est libre. La longueur maximale d'une signature est de 32 caractères.
Ce sont les propriétés de la zone, définies au moyen de la commande PV FIXER PROPRIETE ZONE, qui permettent d'indiquer les possibilités d'une zone 4D View en matière de glisser-déposer :
Une fois le glisser-déposer autorisé, il pourra intervenir entre deux zones (qui peuvent être la même) à la seule condition qu'elles possèdent au moins une signature commune, de glisser pour la zone source et de déposer pour la zone cible.
L'événement de glisser ou de déposer sera, quant à lui, intercepté par la commande PV APPELER SUR EVENEMENT.
L'exemple ci-dessous fournit une illustration de glisser-déposer entre deux zones 4D View. Commençons par paramétrer les signatures et le comportement des zones, par exemple lors du chargement du formulaire :
ARRAY TEXT($TabSignaturesGD;1)
$TabSignaturesGD{1}:="Signature_1"
PV SET AREA PROPERTY(ZoneSource;pv drag trigger;pv trigger on alt click) `alt-clic pour glisser
PV SET AREA PROPERTY(ZoneSource;pv drag allowed;pv DD multiple cells)
PV ON EVENT(ZoneSource;pv on drag;"MéthodeGlisserDéposer")
PV SET DRAG SIGNATURES(ZoneSource;$TabSignaturesGD)
PV SET AREA PROPERTY(ZoneCible;pv drop allowed;pv DD single cell+
pv DD adjacent cells+pv DD multiple cells)
PV SET AREA PROPERTY(ZoneCible;pv drop mode;pv drop replace only)
PV ON EVENT(ZoneCible;pv on drop;"MéthodeGlisserDéposer")
PV SET DROP SIGNATURES(ZoneCible;$TabSignaturesGD) `Mêmes signatures que glisser
La méthode projet MéthodeGlisserDéposer sera appelée lors d'un glisser avec alt-clic ou d'un déposer sur la zone cible :
C_LONGINT($1) `Référence de la zone 4D View
C_LONGINT($2) `Événement
C_LONGINT($3) `Code de la touche (modifier)
C_LONGINT($4) `Numéro de la colonne
C_LONGINT($5) `Numéro de la ligne
C_LONGINT($6) `Code ASCII de la touche
C_POINTER(PtrZoneSource;PtrZoneCible) `Pas de locales pour les conserver entre deux rétro-appels
C_BLOB($blob) `Presse-papiers temporaire du glisser-déposer
C_LONGINT($colonneCourante;$ligneCourante) `Coordonnées de la cellule courante
C_LONGINT($colonneDest;$ligneDest) `Coordonnées de la cellule visée par le déposer
Case of
:($2=pv on drag)
PV GET DRAG SOURCE($1;PtrZoneSource) `D'où venons-nous ?
:($2=pv on drop)
PV GET DROP TARGET($1;PtrZoneCible) `Où allons-nous ?
$blob:=PV Copy to blob(PtrZoneSource->) `Copie dans le presse papiers
$colonneDest:=PV Get drop info(PtrZoneCible->;pv drop column) `Coordonnées...
$ligneDest:=PV Get drop info(PtrZoneCible->;pv drop row) `...de destination
PV GET CURRENT CELL(PtrZoneCible->;$colonneCourante;$ligneCourante)
PV GOTO CELL(PtrZoneCible->;$colonneDest;$ligneDest) `Collons à l'endroit désigné
PV PASTE FROM BLOB(PtrZoneCible->;$blob;1;1;1;1)
`Rétablissement de la cellule courante une fois l'opération réalisée
PV GOTO CELL(PtrZoneCible->;$colonneCourante;$ligneCourante)
End case
Produit : 4D View
Thème : PV Glisser déposer
Numéro :
15935
Créé : 4D View 6.8
4D View - Langage ( 4D View v16)