Page 1 sur 1

[R] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : dim. 02 janv. 2011 22:43
par Nilak
Hello,


Je travaille sur un petit programme, assez simple, mais je bloque sur deux petits problèmes mineurs qui font que le travail n'est pas encore au point! En effet j'aimerai bien que dans la zone GUICtrlCreateEdit je puisse faire un ctrl + a pour sélectionner tout le texte qui s'y trouve (le ctrl + c ou v fonctionne...) et je me demandais si ce que j'ai fait est correct pour avoir un retour à la ligne automatique comme sous notepad! L'affichage donne le résultat voulu, mais est ce bien propre?

Code : Tout sélectionner

 
GUICtrlCreateEdit("",16,75,600,300,$ES_WANTRETURN + $WS_VSCROLL  + $ES_AUTOVSCROLL )
Voilà, juste ces petites choses!

Merci par avance. :D

Re: [..] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : mar. 04 janv. 2011 09:41
par Nilak
Bonjour,



Personne sait comment permettre le control + A dans un controledit? /:*


Edit: Apres plusieurs recherches supplémentaires sur google j'ai trouvé ça:

"Selecting all text with Ctrl-A is not an inherent behavior of Edit controls (usually it's just a menu shortcut for "Select All"), but you can easily program it with HotKeySet and the GUIEdit UDFs in the beta version. Type some text into the edit box in the attached script and try it out."

Avec un fichier .au3 qui résout le problème... Mais je n'arrive pas à accéder au forum autoit... Et je ne peux donc pas télécharger le fichier.

Re: [..] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : sam. 08 janv. 2011 18:41
par Nilak
Re!

Depuis que le forum autoit.com est revenu, j'ai pu lire la solution du topic...

Code : Tout sélectionner

 
Func SelectAll()
    _GUICtrlEdit_SetSel($zone,0,-1) ;See GUIEdit.au3 for info on the parameters to this function
EndFunc
 
Avec un hotkeyset. Par contre, il y a un probleme, si la GUI n'est pas active, le raccourci est défini est valide pour toutes les autres fenêtres.. Du coup il n'est plus possible d'utiliser la fonction ctrl + a ailleurs que dans la GUI...

j'ai donc rajouté ça dans la boucle while 1

Code : Tout sélectionner

    $Focus = WinGetState("GUI","")
    If $Focus = 15 Then
        $rac = 1
        If $rac = 1 Then
            HotKeySet("^a","SelectAll")
        EndIf
    Else
        $rac = 0
    EndIf
Je pense que ça marche, mais le raccourci est toujours défini... Il y a un moyen d'annuler la définition d'un hotkeyset?

Re: [..] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : sam. 08 janv. 2011 19:36
par Tlem
Oui, vous devez le redéfinir mais sans la fonction affectée.
Voici l'exemple de la doc :

Code : Tout sélectionner

; capture and pass along a keypress
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
    ; ... can do stuff here
    HotKeySet("{Esc}")  ; <====== ICI
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc

Re: [..] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : sam. 08 janv. 2011 19:44
par Nilak
Ha oui.. C'était tout simple... Désolé pour ce message, je n'avais pas vraiment fait attention à la lecture de la fonction hotkeyset ><


Merci bien en tout cas. Ca fonctionne niquel.

Re: [R] GUICtrlCreateEdit ctrl a et retour à la ligne

Posté : dim. 11 déc. 2011 02:35
par matwachich
Bah j'ai plus simple

Code : Tout sélectionner

$Edit = GuiCtrlCreateEdit(...)
$hEdit = GuiCtrlGetHandle($Edit)
$Dummy = GuiCtrlCreateDummy()
$Accels[1][2] = [["^a",$Dummy]]
GuiSetAccelerators($Accels)

While 1
    Switch GuiGetMsg()
        ...
        Case $Dummy
            _GUICtrlEdit_SetSel($hEdit, 0, -1)
        ...
    EndSwitch
WEnd