Page 1 sur 1

[R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 14:22
par EricF
Bonjour,
Je commence l'utilisation de Koda. J4ai réussi à faire une fenêtre retaillable. Comment agrandir le contenu (une zone d'onglet dans mon test) automatiquement ?

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 14:27
par Tlem
Vous devez surveiller la taille de votre GUI en utilisant une méthode simple tel que la comparaison de la taille à un instant T puis T + 1 ou bien de manière plus évoluée, vous devez utiliser une CallBack pour surveiller l'action du redimensionnement et adapter celle des éléments intérieur.
Vous trouverez cela en utilisant le moteur de recherche du forum.

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 14:53
par EricF
MErci, je vais voir ça.

Pour rendre scrollable une zone, faut-il rajouter WS_VSCROLL dans l'inspecteur d'objets de Koda ? J'ai testé, mais l'ascenseur reste fixe.

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 16:03
par mikell
EricF a écrit :Comment agrandir le contenu (une zone d'onglet dans mon test) automatiquement ?
Tu as essayé GUICtrlSetResizing ?
Pour le scroll, ça dépend de ce que tu appelles "une zone"... une gui ? un controle ?

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 16:12
par EricF
En l'occurence, une zone d'onglets. Le callback ne semble pas simple à mettre en place pour l'instant, je préfère donc mettre uen scrollbar au cas où le contenu dépasse la hauteur. Pour l'instant, le résultat n'est pas top :-/
gui.png

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 18:10
par mikell
Heu, la solution la plus simple reste quand même de faire des boutons plus petits, ou des boutons radio dans un groupe, ça prend moins de place ^^
Une tab scrollable ça risque d'être chaud

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 18:30
par EricF
LA disposition, c plus pour tester, la taille et l'écartement des boutons seront adaptés à la fin. LE problème est que je vais avoir besoin de créer un bon nombre de boutons dynamiquement. Mais je v essayer de les ranger sur plusieurs colonnes, ça devrait être facile en se basant sur le nombre de boutons à générer.
Sinon, si je mets ma zone d'onglets dans un groupe, je peux facilement faire scroller le groupe si j'adapte la hauteur des onglets selon le nombre de boutons ?

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 19:29
par mikell
Facilement, ça j'ai comme un gros doute... :shock:
Mais le moment venu si tu postes un script fonctionnel comme exemple on testera et on verra bien si c'est faisable

Re: [..] Agrandir une zone en même temps que la fenêtre

Posté : lun. 23 avr. 2012 19:43
par EricF
Ok, je verrais déjà ce que je peux faire.

Merci poru vos réponses.

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 30 avr. 2012 19:26
par EricF
Deux problèmes se posent :

1. Problème de déclaration de variables de type Array pour les _FileListToArray(). J'ai zieuté un script qui fait globalement la même chose, la déclaration se faisait après le _FileListToArray(), mais pour ma part, ça semble difficile à faire.

Code : Tout sélectionner

    For $i = 1 To $dossiers[0]
        ; = $liste_fichiers & $dossiers[$i] & @CRLF
        $TabSheet[$i] = GUICtrlCreateTabItem($dossiers[$i])

        $fichiers = _FileListToArray("./" & $fichiers[$i] & "/", "*.rdp", 1) ;On liste les fichiers RDP

            For $j = 1 To $fichiers[0]
                ;$Button[$j] = GUICtrlCreateButton($fichiers[$j], $pos_haut, 72, 113, 33)
                $var = $var & $fichiers[$j] & @CRLF

                $pos_haut = $pos_haut+20
            Next
    Next
2. Comment affecter les actions aux boutons, ou plutôt comment générer les différents case pour mes boutons ?

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 30 avr. 2012 20:27
par mikell
1 - si tu mets 'Global $fichiers ' en tête de script ça devrait faire l'affaire
2 - La 1ère boucle For liste les dossiers et fait les tabs, la 2ème liste les fichiers et fait les boutons, donc a priori il te faut une array à 2 dimensions, $Button[$i][$j]
Quelle doit être l'action associée aux boutons ?

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 30 avr. 2012 21:50
par EricF
shellexecute

Maintenant, j'obtiens un "Subscript used with non-Array variable." sur la 3è ligne du code ($tabsheet). $dossiers et $tabsheet sont définis en global

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 30 avr. 2012 22:04
par TopXm
Hello,

Si j'ai bien pigé tu veux en fait lister puis ouvrir tes fichiers RDP lorsque tu les cliques ?

Dans ce cas passer par des boutons me parait lourd non ? Pourquoi ne pas passer par une list/listview/combo comme ça tu ne galères pas avec la gestion du positionnement des boutons ;)

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : lun. 30 avr. 2012 22:13
par EricF
TopXm a écrit :Dans ce cas passer par des boutons me parait lourd non ? Pourquoi ne pas passer par une list/listview/combo comme ça tu ne galères pas avec la gestion du positionnement des boutons ;)
Avec sélection multiple ? J'avais aussi penser passer par des checkboxes. A voir si c complexe avec des boutons.

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : mar. 01 mai 2012 09:51
par TopXm
Hello :)
EricF a écrit :Avec sélection multiple ? J'avais aussi penser passer par des checkboxes. A voir si c complexe avec des boutons.
Le moins lourd à mon avis c'est une ListView avec cases à cocher. J'ai adapté vite fait un bout de code que j'avais dans ma besace ;)
► Afficher le texteLister Fichiers/Dossiers
@+

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : mar. 01 mai 2012 10:02
par EricF
Merci, je vais regarder ça. Dommage, je ne peux pas visualiser le résultat.

Re: [R] Agrandir une zone en même temps que la fenêtre

Posté : jeu. 03 mai 2012 11:21
par EricF
J'ai réussi à résoudre tous les problèmes rencontrés.
Pour la définition des arrays, j'ai défini les variables en global avec un élément.

Code : Tout sélectionner

global $TabSheet[1]
global $fichiers[1]
Ensuite, à l'intérieur des boucles, je rajoute des éléments avec _ArrayAdd().

Code : Tout sélectionner

    For $i = 1 To $dossiers[0] 
        _ArrayAdd($TabSheet, $dossiers[$i]) ;On incrémente le nombre d'éléments du tableau
        $TabSheet[$i] = Guictrlcreatetabitem($dossiers[$i])

        $fichiers = _FileListToArray("./" & $dossiers[$i] & "/", "*.rdp", 1) ;On liste les fichiers RDP

            For $j = 1 To $fichiers[0]
                _ArrayAdd($checkboxes, $fichiers[$j]) ;On incrémente le nombre d'éléments du tableau
                GUICtrlCreateCheckbox($fichiers[$j], 25, $pos_haut)
Les boutons ont été remplacés par des checkboxes, plus faciles à gérer ici. Il reste à récupérer les cases cochées et à gérer les errreurs, plus quelques petites choses. Mais le plus gros est fait :)

Merci pour vos réponses.