[R] Créer/placer des objets dynamiquement dans un Groupbox

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

[R] Créer/placer des objets dynamiquement dans un Groupbox

#1

Message par CleM71 »

Bonjour,

Je crée en ce moment un formulaire qui liste une arborescence.

Grâce à une liste de répertoire, je veux créer pour chaque répertoire un Checkbox.

Problème : le nombre de ces répertoire peut varier et devenir important. Je souhaite donc les placer dans un Groupbox comprenant une barre de défilement verticale pour conserver l'apparence initiale de mon formulaire.

J'arrive à créer le Groupbox ainsi que les Checkbox, mais un problème de placement se pose :

Supposons que mon Groupbox fasse 200 pixels de hauteurs, et que je place un Checkbox tous les 20 pixels ... Jusqu'à 10 Checkbox, aucun problème ne se pose, ils apparaissent bien dans le Groupbox. Au 11ème, ça se complique énormément ... En effet, la création des Checkbox se fait avec des coordonnées dont l'origine est le coin supérieur gauche du formulaire, et non pas du Groupbox.

Résultat : mon 11ème objet créé ne se trouve pas dans le Groupbox mais en dessous !

J'ai beau eu chercher à droite et à gauche, je n'ai pas trouvé d'aide sur le sujet.

C'est quand même assez dommage de disposer d'un tel objet et de ne pas pouvoir l'exploiter.


J'espère que vous pourrez m'aider

Merci
Modifié en dernier par CleM71 le lun. 26 mai 2008 15:07, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Créer/placer des objets dynamiquement dans un Groupbox

#2

Message par Tlem »

Vous devriez sans doute utiliser GUICtrlCreateTreeView en rajoutant l'option $TVS_CHECKBOXES.
Regarder dans l'aide de AutoIt l'exemple fournit (Celui de la 3.2.12.0 est très complet mais sans $TVS_CHECKBOXES qu'il vous suffira de rajouter).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Créer/placer des objets dynamiquement dans un Groupbox

#3

Message par moutelous »

Bonsoir,

L'option "GUICoordMode" vous permet de gérer les coordonnées relatives.


A+
A+
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Créer/placer des objets dynamiquement dans un Groupbox

#4

Message par CleM71 »

Tlem a écrit :Vous devriez sans doute utiliser GUICtrlCreateTreeView en rajoutant l'option $TVS_CHECKBOXES.
Regarder dans l'aide de AutoIt l'exemple fournit (Celui de la 3.2.12.0 est très complet mais sans $TVS_CHECKBOXES qu'il vous suffira de rajouter).
Bonjour,

C'est en fait ce que j'utilisais précédemment, mais je me suis retrouvé contraint à abandonné cette solution par manque de souplesse, au niveau du traitement des Checkbox cochés dans le Treeview.

Au moment d'un clic en fin de formulaire, je souhaitais connaître quel Checkbox étaient cochés. Il me fallait également stocker des informations sur chaque Checkbox (un élément correspondant à un fichier, il me fallait stocker le nom du fichier, son chemin absolu, et diverses autres infos). Pour celà, j'étais passé par un tableau à deux dimensions, dont la première dimension était l'identifiant d'objet (qui est en hexadécimal à l'origine), que je convertissais en décimal pour être un indice valide. Lors de la création des éléments, j'avais donc par exemple

Code : Tout sélectionner

$TabItems[14562662]["FullPath"] = "C:\Test.zip"
où 14562662 a été convertir depuis l'identifiant en hexadécimal de l'objet créé.

A la lecture, je parcourais tous mes objets, mais l'identifiant de lecture en hexadécimal n'était pas le même que celui de la création ... Exemple : un objet se crée avec un identifiant 00x14568F, lors de sa lecture, il porte l'identifiant 00x17852D.
moutelous a écrit :Bonsoir,

L'option "GUICoordMode" vous permet de gérer les coordonnées relatives.


A+
Je vais regarder de ce côté là, avec mes remerciements.

Merci Tlem également.
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Créer/placer des objets dynamiquement dans un Groupbox

#5

Message par CleM71 »

Après recherches, l'option "GUICoordMode" ne résoud pas mon problème.

Ca me permet de placer mes Checkbox de manière relative, donc par rapport au coin supérieur gauche de mon Groupbox, mais ça ne me permet toujours pas d'en éviter le dépassement.

Au final, j'obtiens donc exactement le même résultat qu'avec un positionnement absolu, à savoir celà :

Image

Je suis toujours preneur de toute piste que vous pouvez me proposer :)

Merci !
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Créer/placer des objets dynamiquement dans un Groupbox

#6

Message par CleM71 »

Après demande sur le forum officiel, la solution n'existe pas.

Impossible donc d'utiliser "vraiment" l'ascenseur dans un Groupbox.

J'ai finalement abandonné cette solution au profit d'un TreeView, en me débrouillant pour qu'il réponde à mes besoins.

Cordialement.
Répondre