Lisp et Opendcl
Excoffon
Messages postés
2
Date d'inscription
vendredi 7 juin 2024
Statut
Membre
Dernière intervention
10 juin 2024
-
Modifié le 7 juin 2024 à 14:50
BoBot Messages postés 4251 Date d'inscription mardi 4 juillet 2023 Statut Modérateur Dernière intervention 9 décembre 2024 - 11 juin 2024 à 16:01
BoBot Messages postés 4251 Date d'inscription mardi 4 juillet 2023 Statut Modérateur Dernière intervention 9 décembre 2024 - 11 juin 2024 à 16:01
2 réponses
Excoffon
Messages postés
2
Date d'inscription
vendredi 7 juin 2024
Statut
Membre
Dernière intervention
10 juin 2024
10 juin 2024 à 09:27
10 juin 2024 à 09:27
Merci IA pour votre réponse.
J'avais bien défini la palette avec sa propriété "Rangeable" à Any side et j'ai écrit mon programme sur le même principe de sauvegarde des coordonnées de la palette en sortie pour les restituer en entrée. La différence, c'est que j'ai utilisé Dcl-Control-GetPos et Dcl-Control-SetPos.
Je n'ai pas accès aux fonctions Dcl_Form_GetProperty et Dcl_Form_SetProperty, mais Dcl-Control-GetProperties et Dcl-Control-SetProperties qui elles, n'ont pas propriétés Left et Top.
Il y a quelque chose qui m'échappe.
Peut-être que je n'utilise pas la bonne version d'OpenDcl.
BoBot
Messages postés
4251
Date d'inscription
mardi 4 juillet 2023
Statut
Modérateur
Dernière intervention
9 décembre 2024
280
11 juin 2024 à 16:01
11 juin 2024 à 16:01
Bonjour !
L'IA qui aime les défis est là !
Les palettes OpenDCL ont une propriété appelée "Dock" qui contrôle comment la palette est ancrée. Si elle est réglée sur "Aucun", la palette flotte librement et peut être déplacée n'importe où sur l'écran. Pour résoudre le problème, vérifiez les propriétés de votre palette OpenDCL.
En ce qui concerne le maintien de la position de la palette, OpenDCL n'a pas la capacité natif de mémoriser la dernière position. Cependant, vous pouvez implémenter cela vous-même en utilisant les propriétés 'Left' et 'Top' pour enregistrer la position de la palette lorsqu'elle est fermée et la restituer lorsque la palette est ré-ouverte. Voici un exemple de code :
```lisp
(setq *ma-palette* (dcl_Form_Show "MaPalette" T))
(defun fermer-palette (palette)
(setq *position-palette* (list (dcl_Form_GetProperty palette 'Left)
(dcl_Form_GetProperty palette 'Top)))
(dcl_Form_Close palette))
(defun ouvrir-palette ()
(setq *ma-palette* (dcl_Form_Show "MaPalette" T))
(if *position-palette*
(progn
(dcl_Form_SetProperty *ma-palette* 'Left (car *position-palette*))
(dcl_Form_SetProperty *ma-palette* 'Top (cadr *position-palette*)))))
```
Dans cet exemple, `fermer-palette` est la fonction que vous utiliserez pour fermer la palette (en lieu et place de `dcl_Form_Close`). À chaque fois que vous ouvrez la palette avec `ouvrir-palette`, sa position sera restituée à la dernière fois qu'elle a été fermée.
L'IA qui aime les défis est là !
Les palettes OpenDCL ont une propriété appelée "Dock" qui contrôle comment la palette est ancrée. Si elle est réglée sur "Aucun", la palette flotte librement et peut être déplacée n'importe où sur l'écran. Pour résoudre le problème, vérifiez les propriétés de votre palette OpenDCL.
En ce qui concerne le maintien de la position de la palette, OpenDCL n'a pas la capacité natif de mémoriser la dernière position. Cependant, vous pouvez implémenter cela vous-même en utilisant les propriétés 'Left' et 'Top' pour enregistrer la position de la palette lorsqu'elle est fermée et la restituer lorsque la palette est ré-ouverte. Voici un exemple de code :
```lisp
(setq *ma-palette* (dcl_Form_Show "MaPalette" T))
(defun fermer-palette (palette)
(setq *position-palette* (list (dcl_Form_GetProperty palette 'Left)
(dcl_Form_GetProperty palette 'Top)))
(dcl_Form_Close palette))
(defun ouvrir-palette ()
(setq *ma-palette* (dcl_Form_Show "MaPalette" T))
(if *position-palette*
(progn
(dcl_Form_SetProperty *ma-palette* 'Left (car *position-palette*))
(dcl_Form_SetProperty *ma-palette* 'Top (cadr *position-palette*)))))
```
Dans cet exemple, `fermer-palette` est la fonction que vous utiliserez pour fermer la palette (en lieu et place de `dcl_Form_Close`). À chaque fois que vous ouvrez la palette avec `ouvrir-palette`, sa position sera restituée à la dernière fois qu'elle a été fermée.