Page 1 sur 1

[R] Faire défiler 2 Edit en même temps

Posté : jeu. 03 nov. 2011 22:01
par TT22
Bonsoir :wink: ,

Voilà mon problème :
Je crée une GUI avec 2 Edit côte à côte, je voudrais que lorsque l'on fasse défiler un Edit, l'autre défile en même temps.

Voilà, en espérant que vous avez compris,

Merci d'avance...

Re: [..] Faire défiler 2 Edit en même temps

Posté : jeu. 03 nov. 2011 22:30
par Ahbadiane
Bonsoir,

_GUICtrlEdit_LineScroll(), non ?

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#Include <GuiEdit.au3>
Global $Form1 = GUICreate("Form1", 408, 106, 349, 206)
Global $Edit = _GUICtrlEdit_Create($Form1, "Texte à faire défiler - Texte à faire défiler - Texte à faire défiler - Texte à faire défiler - Texte à faire défiler - Texte à faire défiler - Texte à faire défiler - Texte à faire défiler", 8, 24, 377, 21)
Global $ButtonM = GUICtrlCreateButton("<<<", 104, 56, 75, 30)
Global $ButtonP = GUICtrlCreateButton(">>>", 204, 56, 75, 30)
GUISetState(@SW_SHOW)
_GUICtrlEdit_SetSel($Edit, 1, 1)
Global $iPos = 1
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $ButtonP
            $iPos += 1
            _GUICtrlEdit_LineScroll($Edit, $iPos, 1)
        Case $ButtonM
            $iPos -= 1
            _GUICtrlEdit_LineScroll($Edit, $iPos, 1)
    EndSwitch
WEnd

Re: [..] Faire défiler 2 Edit en même temps

Posté : ven. 04 nov. 2011 11:05
par TT22
Non, ce n'est pas ça :?
En fait, je voudrais qu'avec un code comme ça :
► Afficher le texte
Lorsque l'on bouge l'Edit de gauche de façon à ce que la première ligne soit "Ligne 5", l'Edit de droit bouge en même temps de façon à ce que la première le devienne aussi "Ligne 5".

Bon, c'est vrai que ce n'est pas très clair mais j'espère que vous avez compris cette fois :wink:

Re: [..] Faire défiler 2 Edit en même temps

Posté : ven. 04 nov. 2011 12:48
par moi
tu fait un input dans la GUI. tu entre le numéro de ligne tu appuis sur un bouton OK.
et la tu utilise _GUICtrlEdit_LineScroll() sur les deux Edit.

??? :)x===>

Re: [..] Faire défiler 2 Edit en même temps

Posté : ven. 04 nov. 2011 13:05
par TT22
Non, je veux que ça se commande avec le scroll :wink:

Re: [..] Faire défiler 2 Edit en même temps

Posté : sam. 05 nov. 2011 23:44
par TT22
Image

Re: [..] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 12:16
par mikell
ça va, ça va ! on se calme ... Image
Les "up" c'est pour les forums de kikoolol et de toute façon ça fera pas avancer les choses plus vite

Bref bon ouala ce que tu veux

Code : Tout sélectionner

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

$Form1 = GUICreate("Form1", 500, 250)
$Edit1 = GUICtrlCreateEdit("",10,10,235,230)
$Edit2 = GUICtrlCreateEdit("",255,10,235,230)
GUISetState()
$text = ""
For $i = 1 To 50
    $text &= "Ligne " & $i & @CRLF
Next
GuiCtrlSetData($Edit1, $text)
GuiCtrlSetData($Edit2, $text)

While 1
$ind_1 = _GUICtrlEdit_GetFirstVisibleLine($Edit1) 
$ind_2 = _GUICtrlEdit_GetFirstVisibleLine($Edit2) 
If $ind_1<$ind_2 Then _GUICtrlEdit_Scroll($Edit2, 0)   ; $SB_LINEUP
If $ind_1>$ind_2 Then _GUICtrlEdit_Scroll($Edit2, 1)   ; $SB_LINEDOWN

Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
        Exit
EndSwitch
WEnd

Re: [..] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 12:19
par Tlem
Edit : J'ai été devancé par mikell. Ceci dit, sa solution ne fonctionne pas en temps réel :roll: . Donc selon vos besoins lisez la suite. :mrgreen:

Une callback sur chaque Edit pour vérifier si déplacement vertical, puis on applique le même déplacement à l'autre Edit.

Re: [..] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 12:29
par TT22
Merci à vous deux, je passe en résolu.
mikell a écrit :ça va, ça va ! on se calme ... Image
C'est la première fois que j'utilise un up et ce forum les tolères (avec modération) :P
Et en plus, ça a fonctionné, j'ai ma réponse :wink:

Re: [..] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 12:51
par mikell
Tlem a écrit :Ceci dit, sa solution ne fonctionne pas en temps réel :roll:
Expliquez... chez moi si je scrolle l'edit 1, ça scrolle l'edit 2 de façon identique, et c'est bien ce qui avait été demandé... :roll:
Le même moins consommateur de ressources
► Afficher le texte
Tlem a écrit :vérifier si déplacement vertical, puis on applique le même déplacement à l'autre Edit.
Et avec _GUICtrlEdit_GetFirstVisibleLine, la condition sur les index de lignes et _GUICtrlEdit_Scroll je fais quoi, alors ? :P
De plus mon script a le mérite d'être simple, surtout si on ne garde que les fonctions nécessaires de GuiEdit.au3 ^^

Je reconnais toutefois que ça aurait été plus "propre" avec un GuiRegisterMsg

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 14:45
par Tlem
:lol:
Je vois que vous êtes aussi susceptible sensible que moi ...

J'ai bien dit que votre code fonctionnait, mais pas en temps réel. Il faut relâcher le clic de la souris sur le curseur pour que le deuxième édit ce mette à jour. J'ai simplement supposé que TT22 voulait cela en temps réel, c'est à dire que lors du déplacement de l'edit 1, l'edit 2 bouge simultanément.

Ceci dit, comme je l'ai précisé, 'selon vos besoins lisez la suite', donc rien de spécial, juste deux solutions. ;)

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 14:58
par TT22
Tlem a écrit :Je vois que vous êtes aussi susceptible sensible que moi ...
Quel moi ? (celui-là ou celui-là ?)
Tlem a écrit :J'ai simplement supposé que TT22 voulait cela en temps réel
Cela n'a pas de grande importance (je prend le code de Mikell car il est déjà programmé :roll: )

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 15:00
par Tlem
Mon message est à la suite de celui de mikell et je ne précise au autre participant, donc il est adressé à ... mikell.

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 15:33
par mikell
Tlem a écrit :J'ai bien dit que votre code fonctionnait, mais pas en temps réel. Il faut relâcher le clic de la souris sur le curseur pour que le deuxième édit ce mette à jour.
Ah voilà pourquoi je pigeais pas...
C'est bizarre parce que quand je teste, si je garde le bouton gauche pressé sur la barre de scroll de l'edit 1 et si je balade cette barre en haut ou en bas, ça me balade aussi la barre de scroll de l'edit 2, exactement comme si je manipulais la barre de l'edit 2... si je le fais vraiment très vite (avec la roulette de la souris par exemple) alors là j'ai un léger retard mais c'est tout :shock:

Heu par contre ça m'intéresserait bien de voir comment vous gèreriez ça avec un callback parce que là je vois pas... :cry:
Tlem a écrit :Je vois que vous êtes aussi susceptible sensible que moi ...
Comment, vous n'allez quand même pas avoir le culot de prétendre que vous ne le découvrez que maintenant :mrgreen:

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 15:41
par Tlem
1 - Sous XP (en tout cas sur mon poste), le comportement est différent.

2 - [Mode mauvaise foi ON]
Si si, je le découvre que maintenant.
[Mode mauvaise foi OFF] :mrgreen:

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 19:09
par mikell
Bah j'ai un XP SP3 x86 ... comprends pas.
Alors vous voulez bien me le montrer ce callback ? je sèche...

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 20:19
par Tlem
Ben, il me faudrait un peut de temps (et c'est ce qui me manque le plus en ce moment ...).
Mais si je trouve une demi-heure ou une heure à consacrer à cela, je vous en ferait part.

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 21:04
par mikell
Merci ça serait sympa
J'ai du mal avec ces callback, ça veut pas rentrer :|

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 21:53
par Tlem
Il faut pas forcément essayer de le faire rentrer (en tout cas, moi ça rentre pas plus) mais avoir une bonne connexion internet, accès aux forums AutoIt et le temps de chercher. ;)

Voilà quelque chose de fonctionnel.
Je sais d'avance ce que vous allez dire, mais le résultat final est là ! :P
► Afficher le texte

Re: [R] Faire défiler 2 Edit en même temps

Posté : dim. 06 nov. 2011 22:49
par mikell
Tlem a écrit :Je sais d'avance ce que vous allez dire
Quoi ?
Que ce script est une usine à gaz ? Que RichEdit est une vraie catastrophe bouffeuse de ressources ? Qu'on s'embarque 1 Mo d'includes avec pour résultat des scrolls tremblotants sur les edit ?
Et bien non je ne le dirai pas :P

Merci en tout cas :mrgreen:
Je garde le script pour essayer une fois de plus de comprendre les finesses de GUIRegisterMsg et de ces foutues fonctions WM