Page 2 sur 3

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 19 févr. 2012 22:04
par JujuLand46
Pour une action en temps réel (directement commandée par le check) il faut passer par un GuiRegisterMsg, dans ce cas c'est le clic de souris sur l'item qui commande l'action
J'ai trouvé une autre méthode qui m'évite toute cette gestion de la souris qui prend la tête, et peut-être aussi pas mal de ressources.
Lors de la création des items, je récupère dans un tableau multiple le controlID, et accessoirement le handle (mais j'évite de m'en servir, les controlID, et les fonctions de bases d'AutoIt me conviennent bien. Tant que je peux me passer des _fonctions)
Il me suffit donc dans autant de boucles que de treeview, d'associer les contrôles à la fonction qui va bien, ensuite, c'est un jeu d'enfant que de traiter...

Code : Tout sélectionner

;=========================
; Define GUICtrl functions
;=========================
;extension
for $rg=0 to $nbext
    GUICtrlSetOnEvent($ExtArray[$rg][3], "extension")
Next
;mime
for $rg=0 to $nbMime
    GUICtrlSetOnEvent($mimeArray[$rg][2], "mime")
Next
Etant donné que vous n'avez pas d'arborescence dans la treeview, il aurait été pas mal plus simple d'utiliser une listview qui est plus facile à gérer
Ca ne me parait pas bien plus difficile à gérer.
Pour la combo j'ai pas bien compris la question
Le bouton commande la lecture de l'item sélectionné dans la combo, et envoie ça dans une variable pour traitement...
Effectivement, comme j'ai un bouton pour traiter le choix du combo, c'est semble-t-il sans objet.

Par contre, j'ai encore un petit problème avec la mise à jour de l'affichage, lors de la mise à jour du texte d'un treeviewItem. Il faut que je clique quelque part dans la zone du treeview, ou que je change d'onglet pour que la mise à jour se fasse.
Je n'ai pas trouvé de méthode pour que la mise à jour soit automatique.
J'ai bien essayé un ControlClick, mais je n'ai pas su le faire fonctionner.

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 19 févr. 2012 22:10
par mikell

Code : Tout sélectionner

 _WinAPI_RedrawWindow($votreGui, "", "", BitOR($RDW_INVALIDATE, $RDW_UPDATENOW))

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 19 févr. 2012 22:54
par JujuLand46
Ca semble nickel, sauf qu'il me manque probablement l'include :)
J'ai essayr WinAPI.au3, mais ce n'est semble-t-il pas çà.
J'ai ajouté WindowsConstants.au3, plus d'erreur, mais aucun résultat probant.

Bon, c'est ok, j'utilisais le titre, et pas le controlID.
Merci

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 05 mars 2012 14:01
par JujuLand46
Bon, tout çà progresse , mais j'ai quelques fois de petites difficultés dont je ne trouve pas la solution dans la doc installée.

Je crée des onglets, et je veux cacher et/ou invalider un des onglets. J'utilise les commandes suivantes:

;-----------------------------------------------
GuiCtrlCreateTabItem("Tux2Km")
;-----------------------------------------------
...
;-----------------------------------------------
$gnomeTab=GuiCtrlCreateTabItem("Gnome")
;-----------------------------------------------
GUICtrlSetState($gnomeTab, $GUI_HIDE + $GUI_DISABLE)
...
;-----------------------------------------------
GuiCtrlCreateTabItem($txt25)
;-----------------------------------------------

et l'onglet est visible et cliquable.
La doc ne stipule pas d'impossibilité hormis pour menu, et menuitem.

Merci
A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 05 mars 2012 15:02
par mikell
Le 'hide-show' et le 'disable-enable' n'existent pas pour les tabitems
Seul moyen : détruire-recréer le tabitem :(

EDIT
En bidouillant on peut faire en sorte de désactiver les tabitems non sélectionnés, mais j'ai pas mieux à proposer Image
► Afficher le texte

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 05 mars 2012 16:45
par JujuLand46
C'est un bien trop grosse usine à gaz comparé à la raison qui me poussait à vouloir cacher une tabulation.

Merci de toute façon pour l'effort.

Je vais prendre une autre solution.

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 11 mars 2012 18:00
par JujuLand46
Bon, j'arrive presque à la fin de mon outil, et j'ai un dernier problème que je ne comprends pas.
J'ai créé le bouton $WineExt, j'ai assigné une fonction à ce bouton, mais si celui-ci est créé, il ne génère aucun évênement, et je n'exécute jamais la fonction. Pourtant, visuellement, je clique bien sur le bouton (effet de poussoir).

En changeant le nom ou le libellé du bouton, rien n'y fait. J'ai depuis créé le bouton GPLv2, et celui-ci fonctionne correctement.

Si quelqu'un a une idée ...

PS: j'ai posté en pièce jointe, car en code, çà dépasse la taille maxi autorisée pour les messages.
Merci
A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 11 mars 2012 20:55
par mikell
C'est une erreur d'inattention (classique dans les codes très volumineux) :wink:
Un GUISetOnEvent au lieu d'un GUICtrlSetOnEvent

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 11 mars 2012 22:22
par JujuLand46
Grrr... p..... de copier-coller, si j'avais choisi la ligne suivante comme modèle :)

Merci encore
A+

Re: [..] Click bouton ne fonctionne que sur une partie du bo

Posté : jeu. 22 mars 2012 13:41
par JujuLand46
Voici un dernier outil ou j'ai quelque soucis:

Le bouton quit ne réagit au click que sur la partie située en dessous du texte du bouton, alors que le bouton situé au milieu à droite, qui est une copie juste renommée, fonctionne correctement.

Même problème pour les deux autres boutons situés en bas de la fenêtre.
► Afficher le textecode
Si quelqu'un a une idée ...

PS: devrait pouvoir être lancé sans risque, car il n'y a pas encore de RegWrite, jusque quelques RegRead qui ne devraient pas trop poser de problème pour une éventuelle exécution.

Marci
A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : jeu. 22 mars 2012 15:52
par mikell
Tiens ça aussi c'est un classique...
Tsss tss le manque de rigueur dans la construction de la gui, qui fait qu'une label mord sur les boutons :mrgreen:

Code : Tout sélectionner

$htitle=GuiCtrlCreateLabel("----------[ URL2Km " & $version & " (" & $datVers & ") ]-----------------------------------------------------------------------------------------------------------------",0,166,500,[color=#FF0000]14[/color])

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : jeu. 22 mars 2012 16:40
par JujuLand46
Probablement un classique pour autoIt, mais ca ne semble pas évident, car quit est créé après, et donc aurait à mon avis du être au dessus du label.

De toute façon, merci

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : jeu. 22 mars 2012 17:52
par JujuLand46
Petite question: existe-t-il un controle qui permette d'afficher des fichiers xpm, çà m'éviterait d'utiliser ImageMagick pour les transformer en jpeg ?

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : dim. 01 avr. 2012 18:51
par JujuLand46
Bon, je vois que la question précédente n'inspire personne ... pas grave, j'utilise donc ImageMagick, c'est moins beau en jpg, mais çà fonctionne.

J'ai maintenant une fonction concernant une insertion dans un treeview

Code : Tout sélectionner

[b]$item= StringLower($extNew) & $sp1 & "Win2Tux.file"  & $sp2 & $sp3[/b] ; texte du nouveau treeViewItem
[b]$rg=SearchPosInExt($extNew)[/b]     ;retourne le rang du treeViewItem derrière lequel insérer le nouvel arrivant
[b]$handle=_GUICtrlTreeView_InsertItem($extensionView,$item,$extArray[$rg][4])[/b] ; extArray[$rg][4] contient le handle du treeviewItem derrière lequel insérer le nouvel arrivant.
Pas d'erreur à l'exécution, il me retourne un handle (pas 0) mais il ne m'insère rien ...
en fait, je ne suis pas sûr du paramètre à donner ... disponibles : le texte, le ID ou le handle ...

Merci de vos lumière ...

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 02 avr. 2012 11:42
par mikell
Ta syntaxe a l'air correcte...
Mais je n'utilise jamais cette fonction _GUICtrlTreeView_InsertItem : sur mon pc, si je prends juste l'exemple de l'aide, l'item est bien inséré mais le texte affiché est illisible (ça affiche les carrés des caractères non reconnus)

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 02 avr. 2012 12:58
par JujuLand46
Merci,

Quel est le fichier d'exemple que tu as essayé ?

A+

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 02 avr. 2012 13:52
par mikell
Ben celui qui est là

Code : Tout sélectionner

$oIE=ObjCreate("Shell.Explorer.2")
$gui = GUICreate("", 700, 450, -1, -1, -1, 0x80) 
$gX = GUICtrlCreateObj($oIE, 0, 0, 700, 450)
GUISetState()
$oIE.Navigate("mk:@MSITStore:" & StringRegExpReplace(@Autoitexe, '(.+)\\[^\\]+', "$1") _  
    & "\UDFs3.chm::/html/libfunctions/" & "_GUICtrlTreeView_InsertItem.htm")
While GuiGetMsg()<>-3
Wend

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 02 avr. 2012 16:53
par JujuLand46
Merci,
L'exemple est inutilisable sous Linux, mais çà m'a permis de m'intéresser au fichier UDFs3.chm que j'avais completement zappé...
Et l'exemple dedans est parlant et fonctionne. En fait, j'avais une erreur de syntaxe, et ce qui fonctionne est là:

Code : Tout sélectionner

[b]$item= StringLower($extNew) & $sp1 & "Win2Tux.file"  & $sp2 & $sp3[/b] ; texte du nouveau treeViewItem
[b]$rg=SearchPosInExt($extNew)[/b]     ;retourne le rang du treeViewItem derrière lequel insérer le nouvel arrivant
[b]$handle=_GUICtrlTreeView_InsertItem($extensionView,$item,[color=#FF0000]0,[/color]$extArray[$rg][4])[/b] ; extArray[$rg][4] contient le handle du treeviewItem derrière lequel insérer le nouvel arrivant.
Le paramètre inutilisé doit avoir la valeur 0. C'est dit dans les commentaires du source, mais pas très explicite.

Une petite question concernant les codages de string.
Je récupère une chaîne UTF8, que je voudrait transformer en ANSI pour édition et retransformer en UTF8 pour sauvegarde.

J'ai essayé avec çà:

Code : Tout sélectionner

$comment=IniRead($file,"Desktop Entry","Comment","")
$a = StringToASCIIArray($comment,0,StringLen($comment),1)
$comment = StringFromASCIIArray($a,0,StringLen($a),2)
mais la chaine présentée à l'édition est toujours en UTF8

Enfin, j'ai une autre petite question juste esthétique, celle-là:
Comme l'initialisation de mon prog peut être un peu long, j'ai créé une fenetre splash dont l'info évolue selon la phase de l'initialisation.

J'ai fait çà de cette façon:

Code : Tout sélectionner

Creation du splash avec quelques contrôles
affichage du splash
boucle
   Affichage de la phase en cours et modification du progress.
finBoucle
masquage du splash
affichage de mon écran
suppression du splash
Tout çà fonctionne bien sauf que lors de l'initialisation je crée un tab, et mon écran de splash semble pollué par ce tab. Voir la copie écran jointe

A+
(Pointilleux le monsieur, pour 2 x 3 lignes de code ...)

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : lun. 02 avr. 2012 17:55
par Tlem
@JujuLand46
Vous avez écrit dans ce sujet plusieurs messages en oubliant la balise de code. Merci de lire ceci http://www.autoitscript.fr/forum/viewto ... 896#p24896 , puis de corriger vos messages.

Re: [..] Déterminer l'item de treeview qui a le focus

Posté : mer. 04 avr. 2012 13:55
par JujuLand46
Autre question:

Je n'ai pas pu utiliser _ArrayInsert(), car c'est malheureusement pour des tableaux mono-dimension, je bricole donc avec une boulcle for next, et çà fonctionne.

Par contre, je suis coincé par un détail:

Comment trouver in ID quand on n'a que le handle d'un contrôle, suite à l'utilisation d'un _GUICtrlTreeView_InsertItem() ?

Merci
A+