[Ex] Saisie semi-automatique

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

[Ex] Saisie semi-automatique

#1

Message par Iste »

Salutations,

Ayant besoin de rajouter de la saisie semi-auto dans l'une de mes editbox, je me suis dis que j'allais chercher sur le net... ha ben, rien trouver.. vais demander de l'aide alors... ha ben, en faite je vais commencer par essayer de le faire moi meme !

Et au final, voici ce que ca donne :

Code : Tout sélectionner

#include <GuiEdit.au3>
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#Include <Array.au3>

$Form1 = GUICreate("Form1", 500, 500)
$Edit = GUICtrlCreateEdit("", 0, 0, 500, 500)
GUISetState(@SW_SHOW)


;~ $phrases = IniReadSection("phrases.ini", "prhases")
Dim $phrases[10][2]
$phrases[0][0] = 4
$phrases[1][1] = "Bonjour"
$phrases[2][1] = "Salut"
$phrases[3][1] = "Une longue phrase avec des espace et des petits oignons !"
$phrases[4][1] = "Bonbon"

;~ _ArrayUnique($phrases,2)
;~ _ArraySort($phrases)
$modif = 1
$lettre = ""

While 1
    $nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
        Case _GUICtrlEdit_GetModify($Edit) = "True"
            If Not _IsPressed("08") Then
                $pos = _GUICtrlEdit_GetSel($Edit)
                If Not StringIsAlNum(StringRight(StringLeft(_GUICtrlEdit_GetText($Edit), $pos[0] - 1), 1)) Or $modif > 1 Then
                    $lettre = StringRight(StringLeft(_GUICtrlEdit_GetText($Edit), $pos[0]), $modif)
                    For $i = 1 To $phrases[0][0] + 1
                        If $i = $phrases[0][0] + 1 Then
                            If $modif > 1 Then
                                If StringRight(StringLeft(_GUICtrlEdit_GetText($Edit), $pos[0]), 1) = " " Then
                                    _GUICtrlEdit_Undo($Edit)
                                    $pos = _GUICtrlEdit_GetSel($Edit)
                                    _GUICtrlEdit_SetSel($Edit, $pos[1], $pos[1])
                                    _GUICtrlEdit_InsertText($Edit, " ", $pos[1])
                                EndIf
                            EndIf
                            $modif = 1
                            ExitLoop
                        EndIf
                        If $lettre = StringLeft($phrases[$i][1], $modif) Then
                            _GUICtrlEdit_InsertText($Edit, StringRight($phrases[$i][1], StringLen($phrases[$i][1]) - $modif), $pos[0])
                            _GUICtrlEdit_SetSel($Edit, $pos[0], $pos[0] + StringLen($phrases[$i][1]) - $modif)
                            $modif += 1
                            ExitLoop
                        EndIf
                    Next
                EndIf
            EndIf
            _GUICtrlEdit_SetModify($Edit, "False")

    EndSelect
WEnd
Je n'ai pas trouvé de bug pour le moment, toute foi je ne suis pas bien sur que ce soit parfait.
Si quelqu'un a mieux a proposer, qui se manifeste :)
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#2

Message par orax »

Intéressant. J'ai également cherché pour voir s'il existe déjà quelque chose mais je n'ai rien trouvé. Par contre, ça serait encore mieux si le script allait chercher les mots directement dans le texte au lieu de devoir les rentrer à l'avance.



:arrow: Edité :
Mise à jour du script que j'avais commencé. Ca affiche une Listebox pour la complétion. Il n'y a pas de gestion de la souris, par contre les touches "haut, bas, droite, gauche, début, fin, page haut, page bas et entrée" permettent de sélectionner le mot.
► Afficher le texte
Modifié en dernier par orax le mer. 08 juil. 2009 20:36, modifié 6 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#3

Message par Iste »

ha oui pas bete, moi jétai parti sur une base de donnée prédéfinie, un peu comme les noms de fonctions
Mais sinon, hum...

Code : Tout sélectionner

#include <Array.au3>
$var = ClipGet()
$result = StringRegExp ($var,"([a-zA-Z0-9]+)",3)
_ArrayDisplay($result)
Edit : j'ai essayé de placer ca dans la boucle :

Code : Tout sélectionner

    $var = StringRegExp ( _GUICtrlEdit_GetText($Edit) ,"([a-zA-Z0-9]+)",3)
    _ArrayConcatenate($phrases , $var)
    $phrases = _ArrayUnique($phrases )
    _ArrayDelete($phrases,0)
    $phrases[0] = UBound($phrases)
;~  _ArrayDisplay($phrases)
en modifiant bien la variable $phrases dans le code d'apres, mais ca plante :/
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#4

Message par orax »

Ben en fait je ne comprend pas. Le StringRegExp ( _GUICtrlEdit_GetText($Edit) ,"([a-zA-Z0-9]+)",3) va récupérer tous les caractères alphanumériques. Il n'y a pas de complétion là.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#5

Message par Iste »

StringRegExp ( _GUICtrlEdit_GetText($Edit) ,"([a-zA-Z0-9]+)",3) renvoi uniquement les mot complet compris entre deux "trucs qui sont pas des lettre ou des chiffre" ce qui tombe bien vu que mon script prend que ca pour la saisie semi auto

Il ne prend pas les lettre et chiffre une a une, car pour ca il faudrait rajouter un "?"
StringRegExp ( _GUICtrlEdit_GetText($Edit) ,"([a-zA-Z0-9]+?)",3)

Enfin essaye tu véras, ca marche tres bien ^^
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#6

Message par orax »

:?: Ben oui mais il faudrait que ça retourne le mot qu'on cherche pour pouvoir le compléter. Ou alors je n'ai rien compris. Image
J'ai intégré le script que j'ai mis à mon premier message :
► Afficher le texte
Ca ne marche que sur une seule ligne pour l'instant. En tapant par exemple : "test " puis "t" alors il y a un tooltip qui s'affiche.
Modifié en dernier par tolf le sam. 04 juil. 2009 13:01, modifié 2 fois.
Raison : Balise code et pas citation !
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#7

Message par Iste »

ben le petit bout que je galere, il est la juste pour remplir la base de donné de mots, apres le reste du code fait ce qu'il y a a faire (mais je sais pas pourquoi, les caratere spécieaux font tout planter :/)

Je regarde ton code ^^

Edit oula, suis fatigué, j'ai du mal a comprendre ^^' sinon j'ai upgradé mon code, apres avoir trouvé les erreur, le voici :
► Afficher le texte
la fonction getmots() rajoute a la liste tout les mot présent dans le texte. la ligne $phrases = $var peut être remplacé par _ArrayConcatenate($phrases , $var), cette dernière conserve en mémoire les mot tapé puis effacé, mais ca pose un petit problème si elle mémorise un mot qui été en court d'écriture.

Vala orax, c'est bien ca que ton code fait ? car je suis un peu fatigué, j'ai du mal a tout saisir désolé ^^'
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#8

Message par orax »

Iste a écrit :Vala orax, c'est bien ca que ton code fait ?
Non ! :P
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#9

Message par Iste »

tant mieux ! car sinon ca aurait été tordu...
Bon, Iste dodo, je reviendrais voir ca demain ^^
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#10

Message par orax »

Image Image
► Afficher le texte
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [Ex] Saisie semi-automatique

#11

Message par orax »

J'ai ajouté une Listebox pour la complétion (mise à jour dans mon premier message : http://www.autoitscript.fr/forum/viewto ... 217#p19217).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre