[R] RichEdit s'affiche dans toutes mes Tab

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Flashneo
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 27 avr. 2016 16:22
Status : Hors ligne

[R] RichEdit s'affiche dans toutes mes Tab

#1

Message par Flashneo »

Bonjour,

Je rencontre un problème que je n'arrive pas à résoudre même en ayant chercher sur internet et dans la doc. Mon problème est que j'ai intégrer un RichEdit dans un Tabsheet et que quand je change de tabsheet mon RichEdit ne disparait pas, il s'affiche dans toutes mes Tab. Je pense que cela vient du faite qu'il s'intègre dans la gui, et pas dans le tab...

Merci d'avance pour votre aide, je commence a désespérer....
Modifié en dernier par Flashneo le sam. 21 mai 2016 00:45, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] RichEdit s'affiche dans toutes mes Tab  

#2

Message par mikell »

C'est parce qu'avec RichEdit il y a une finesse : il faut activer/montrer et désactiver/masquer le controle au changement de tabitem
Voilà un exemple qui vient du forum US :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GuiTab.au3>
#include <GuiRichEdit.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

$Form1 = GUICreate("Main", 400, 400)
$idTab = GUICtrlCreateTab(2, 2, 396, 396)
$hTab = GUICtrlGetHandle($idTab)
$TabSheet1 = GUICtrlCreateTabItem("Main")
GUICtrlCreateLabel("Main tab 0...", 20, 50, 360, 20)
$TabSheet2 = GUICtrlCreateTabItem("History")
GUICtrlCreateLabel("History tab 1...", 20, 50, 360, 20)
$hRichEdit = _GUICtrlRichEdit_Create($Form1, "", 20, 80, 360, 200, BitOR($ES_MULTILINE, $ES_READONLY, $WS_VSCROLL))
For $n = 1 To 20
    _GUICtrlRichEdit_AppendText($hRichEdit, $n & ": Test a very long line of text in a RichEdit box." & @CRLF)
Next
ControlDisable($Form1, "", $hRichEdit)
ControlHide($Form1, "", $hRichEdit)
$TabSheet3 = GUICtrlCreateTabItem("blah")
GUICtrlCreateLabel("blah tab 2...", 20, 50, 360, 20)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _GUICtrlRichEdit_Destroy($hRichEdit)
            Exit
    EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab, $iTab
    $hWndTab = $hTab

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndTab
            Switch $iCode
                Case $TCN_SELCHANGE ; selection changed
                    $iTab = _GUICtrlTab_GetCurSel($hTab)
                    Switch $iTab
                        Case 1
                            ControlEnable($Form1, "", $hRichEdit)
                            ControlShow($Form1, "", $hRichEdit)
                        Case Else
                            ControlDisable($Form1, "", $hRichEdit)
                            ControlHide($Form1, "", $hRichEdit)
                    EndSwitch
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Flashneo
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 27 avr. 2016 16:22
Status : Hors ligne

Re: [..] RichEdit s'affiche dans toutes mes Tab

#3

Message par Flashneo »

Merci, j'ai pas compris la ligne avec Case 1, mais ça fonctionne c'est le plus important donc c'est pas grave
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] RichEdit s'affiche dans toutes mes Tab

#4

Message par mikell »

Sisisi, faut comprendre :mrgreen:

Code : Tout sélectionner

$iTab = _GUICtrlTab_GetCurSel($hTab)  ; retourne l'index base-0 du tab sélectionné
Switch $iTab
    Case 1  ; celui d'index 1 donc le 2ème (onglet "history" dans le code) où est le Richedit
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre