4D v16.3Présentation du Glisser-Déposer |
||
|
4D v16.3
Présentation du Glisser-Déposer
Présentation du Glisser-Déposer
4D dispose de fonctions intégrées vous permettant de gérer le glisser-déposer ("drag and drop") parmi les objets de vos formulaires et vos applications. Vous pouvez glisser-déposer un objet sur un autre objet situé dans la même fenêtre ou dans une autre fenêtre. Autrement dit, vous pouvez effectuer des glisser-déposer à l'intérieur d'un même process ou entre différents process. Vous pouvez également glisser-déposer des objets entre les formulaires 4D et d’autres applications ou effectuer l’opération inverse. Par exemple, il est possible de glisser-déposer un fichier image GIF dans un champ image 4D. Il est également possible de sélectionner du texte dans une application de traitement de texte et de le déposer dans une variable texte de 4D. Enfin, il est possible de déposer des objets directement sur l’application sans qu’un formulaire ne soit nécessairement au premier plan. La Méthode base Sur déposer permet dans ce cas de gérer le glisser-déposer. Ce principe permet par exemple d’ouvrir un document 4D Write en le déposant sur l’icône de l’application 4D. Note : Pour ne pas alourdir cette introduction, nous admettrons ici que le glisser-déposer permet de "transporter" des données d'un point à un autre. Nous verrons plus loin qu'un glisser-déposer peut aussi être la métaphore (c'est-à-dire la représentation au niveau de l'interface utilisateur) de toute opération, quelle qu'elle soit. Si vous souhaitez qu'un objet soit glissable, c'est-à-dire que vous puissiez le faire glisser et le déposer sur un autre objet, vous devez sélectionner la propriété "Glissable"pour cet objet dans la Liste des propriétés. L'objet que vous faites glisser est appelé objet source de l'opération de glisser-déposer. Si vous souhaitez qu'un objet soit déposable, c'est-à-dire que l'objet puisse être la destination d'une opération de glisser-déposer, vous devez sélectionner la propriété "Déposable" pour cet objet dans la Liste des propriétés. L'objet qui reçoit les données est appelé objet de destination de l'opération de glisser-déposer. Glisser automatique et Déposer automatique : ces propriétés supplémentaires sont disponibles pour les champs et variables texte, combo box et list box. L'option Déposer automatique est également disponible pour les champs et variables image. Elles permettent d'activer un mode de glisser-déposer automatique basé sur la copie du contenu (le glisser-déposer n'est plus géré par les événements formulaires 4D). Reportez-vous au pararaphe "Glisser-Déposer automatique" à la fin de ce chapitre. Par défaut, les objets nouvellement créés ne possèdent aucune de ces propriétés. Il est de votre ressort de les sélectionner explicitement. Tous les objets situés dans un formulaire entrée ou dans une boîte de dialogue peuvent être définis comme glissables et déposables. Les éléments individuels d'un tableau (par exemple une zone de défilement), les éléments d'une liste hiérarchique ou les lignes d'une list box peuvent être glissé(e)s et déposé(e)s. Inversement, vous pouvez faire glisser et déposer tout objet sur un élément individuel d'un tableau ou d'une liste hiérarchique, ou encore une ligne de list box. Il n'est toutefois pas possible de faire glisser et de déposer des objets depuis la zone de corps d'un formulaire sortie. Vous pouvez également gérer les glisser-déposer sur l'application, en-dehors de tout formulaire, via la Méthode base Sur déposer. Afin de vous laisser "carte blanche" lors de la construction d'une interface utilisateur exploitant le glisser-déposer, 4D vous permet d'utiliser tout type d'objet actif (champ ou variable) en tant qu'objet source ou destination. Par exemple, si vous le souhaitez, vous pouvez glisser-déposer des boutons. Notes
Notez qu'un objet "glissable" et "déposable" peut être déposé sur lui-même (à moins que vous n'interdisiez cette opération, reportez-vous aux paragraphes suivants). Voici la Liste des propriétés, dans laquelle les propriétés "Glissable" et "Déposable" ont été définies pour l'objet sélectionné : La gestion du glisser-déposer par programmation est basée sur trois événements formulaires : On Begin Drag Over, On Drag Over et On Drop. Pour que l'application puisse traiter ces événements, il doivent avoir été sélectionnés de manière appropriée dans la Liste des propriétés : L'événement formulaire On Begin Drag Over est sélectionnable pour tous les objets de formulaire pouvant être glissés. Il est généré dans tous les cas lorsque l’objet dispose de la propriété Glissable.
Les données de 4D sont placées dans le conteneur de données avant l’appel de l’événement. Par exemple, pour un glisser sans l’option Glisser automatique, le texte glissé est déjà dans le conteneur au moment de l’appel de l’événement. L'événement On Drag Over est envoyé de manière répétée à l'objet de destination lorsque le pointeur de la souris est placé sur l'objet. Généralement, en réponse à cet événement, vous effectuez les actions suivantes :
Pour signaler que le glisser est accepté, la méthode de l'objet de destination doit retourner 0 (zéro), vous exécutez donc $0:=0. Pour signaler que le glisser est refusé, la méthode de l'objet de destination doit retourner -1 (moins un), vous exécutez donc $0:=-1. Pendant un événement On Drag Over, 4D traite la méthode de l'objet comme une fonction. Si aucun résultat n'est retourné, 4D considère que le glisser est accepté. Si vous acceptez le glisser, l'objet de destination est activé. Si vous le refusez, l'objet de destination reste inactivé. Accepter le glisser ne signifie pas que les données glissées vont être insérées dans l'objet de destination. Cela signifie uniquement que l'objet de destination, si le bouton de la souris était relâché à cet instant, accepterait les données. Si vous ne gérez pas l'événement On Drag Over pour un objet dont la propriété "Déposable" a été sélectionnée, l'objet sera activé pour tous les glisser, quels que soient la nature et le type des données glissées. La traitement de l'événement On Drag Over vous permet de contrôler la première phase d'une opération de glisser-déposer : non seulement vous pouvez tester si le type des données glissées est compatible avec l'objet de destination — et donc accepter ou refuser le glisser — mais également, vous en informez l'utilisateur, car 4D active ou non l'objet de destination en fonction de votre décision. Le code traitant un événement On Drag Over doit être court et s'exécuter rapidement car cet événement est envoyé de manière répétée à l'objet de destination courant, en fonction des mouvements de la souris. ATTENTION : A compter de la version 11 de 4D, si le glisser-déposer est un glisser-déposer interprocess, ce qui signifie que l'objet source est situé dans un process (fenêtre) différent de celui de l'objet de destination, la méthode de l'objet de destination lors de l'événement On Drag Over est exécutée dans le contexte du process de destination. Pour connaître la valeur des éléments glissés, vous devez utiliser les commandes de communication interprocess. Il est généralement préférable dans ce cas d'utiliser l'événement On Begin Drag Over et les commandes du thème Conteneur de données. L'événement On Drop est envoyé (une seule fois) à l'objet de destination lorsque le bouton de la souris est relâché alors que le pointeur se trouvait au-dessus de l'objet. Cet événement est la seconde phase d'un glisser-déposer, dans laquelle vous effectuez les véritables opérations répondant à l'action de l'utilisateur. Cet événement n'est pas envoyé à l'objet si le glisser n'a pas été accepté dans le ou les événement(s) On Drag Over. Si vous traitez l'événement On Drag Over pour un objet et refusez le glisser, l'événement On Drop ne se déclenche pas. Ainsi, si pendant l'événement On Drag Over vous avez testé la compatibilité entre le type des données de l'objet source et de destination et accepté le glisser, vous n'avez pas besoin de tester de nouveau les données dans l'événement On Drop : vous savez déjà qu'elles sont compatibles. L'aspect le plus intéressant de l'implémentation du glisser-déposer dans 4D est que le programme vous permet de faire ce que vous voulez. Par exemple :
La gestion du glisser-déposer de 4D est une boîte à outils vous permettant d'implémenter toutes les métaphores d'interface utilisateur auxquelles vous pouvez penser. La commande DRAG AND DROP PROPERTIES retourne :
La commande Drop position retourne le numéro ou la position de l'élément cible si l'objet de destination est un tableau (c'est-à-dire une zone de défilement), une liste hiérarchique, un texte ou une combo box, ainsi que le numéro de colonne si l'objet est une list box. Les commandes telles que RESOLVE POINTER et Type sont utiles pour tester la nature et le type de l'objet source. Lorsque l'opération de glisser-déposer est destinée à copier les données glissées :
Lorsque le glisser-déposer n'est pas destiné à déplacer des données mais plutôt à créer des métaphores d'interface pour des opérations particulières, vous pouvez virtuellement réaliser tout ce que vous voulez. Si le glisser-déposer implique le déplacement de données hétérogènes ou de documents entre deux applications 4D ou une application 4D et une application tierce, les commandes du thème “Conteneur de données” vous fourniront tous les outils nécessaires. Pour plus d'informations sur l'utilisation des commandes du thème “Conteneur de données” dans le cadre du glisser-déposer, reportez-vous à la section Gestion du conteneur de données. Les objets texte (champs, variables, combo box et list box) ainsi que les objets image autorisent le glisser-déposer automatique, c’est-à-dire le déplacement ou la copie direct(e) de la sélection de texte ou d'une image d’une zone à une autre par simple clic. Il peut être employé dans la même zone 4D, entre deux zones 4D, ou entre 4D et une autre application, par exemple WordPad. Note : En cas de glisser-déposer automatique entre deux zones 4D, les données sont déplacées, c’est-à-dire qu’elles sont supprimées de la zone source. Si vous souhaitez recopier les données, appuyez sur la touche Ctrl (Windows) ou Option (OS X) pendant l’opération (sous OS X, vous devez appuyer sur la touche Option après avoir commencé le glisser). Le glisser-déposer automatique peut être paramétré séparément pour chaque objet d'un formulaire via deux options de la Liste des propriétés : Glisser automatique et Déposer automatique :
A compter de la version 11, 4D permet le glisser-déposer de sélections, d’objets ou de fichiers extérieurs à 4D, comme par exemple des fichiers image. Cette possibilité doit être prise en charge par le code de la base. Lorsque cette option est cochée, le déposer d’objets externes est refusé dans les formulaires 4D. A noter toutefois que l’insertion d’objets externes reste possible dans les objets disposant de l’option Déposer automatique, lorsque l’application peut interpréter les données déposées (texte ou image).
Voir aussi
DRAG AND DROP PROPERTIES
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
UTILISATION DE L'ARTICLE
4D - Langage ( 4D v16) |