[..] Problème d'affichage des retours à la ligne dans EDIT

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
sieurcoug
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 06 mars 2008 16:44
Localisation : Normandie
Status : Hors ligne

[..] Problème d'affichage des retours à la ligne dans EDIT

#1

Message par sieurcoug »

Bonjour à tous,

Je suis nouveau sur ce forum mais je fais déjà un peu de génial Autoit depuis quelque temps.

Le problème qui m'amène pour avoir votre avis, c'est que lorsque j'affecte une chaine de caractère dans un contrôle GUI Edit, les retours chariot ne sont pas pris en compte. A la place il s'affiche un carré. Et je perd la mise en forme.

La chaîne qui pose problème est récupérée dans une application java. Mais pourtant cette chaîne s'affiche très bien dans msgbox. Je ne comprends pas.
Par contre les retours chariot issus d'un fichier texte sont OK.

Voici des copies d'écran pour être plus clair :

Image

Vous voyez que la description du problème est concaténée avec des caractères "carrés". Le texte avec les retour chariot est lu dans un fichier texte.
Mais dans un msgbox, c'est ok :
Image

J'ai beau nettoyer la chaîne avec des StringStripCR, StringReplace($text, Chr(10), "") et StringReplace($text, Chr(13), ""), ca les enlèves sans résoudre mon problème.

Qu'en pensez-vous ?
Comment voir comment est réellement constituée la chaîne ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème d'affichage des retours à la ligne dans EDIT

#2

Message par Tlem »

Pouvez-vous nous donner un peut plus d'infos, avec une partie du code, pour voir le control exacte que vous utilisez, et la manière dont vous l'avez créé ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
sieurcoug
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 06 mars 2008 16:44
Localisation : Normandie
Status : Hors ligne

Re: [..] Problème d'affichage des retours à la ligne dans EDIT

#3

Message par sieurcoug »

Bonjour,

Désolé de faire remonter ce problème de retours chariots mais je n'ai toujours pas trouvé la solution malgré mes recherches et tests divers.
Si vous avez une idée...
En clair :
  • je récupère du texte dans une appli avec WinGetText(). Je manipule ce texte avec d'autres pour en faire un email.
    Jusque là tout va bien. Ce texte est nickel avec les retours à la ligne qui sont correctement interprétés, aussi bien avec ConsoleWrite(), dans une msgbox ou écrit dans un fichier.
  • Le souci vient quand j'affecte ce texte dans une zone Edit, afin que je puisse retoucher mon email préparé par mon code autoit :

    Code : Tout sélectionner

    $lblEmail = GUICtrlCreateEdit(@CRLF & "  Saisie", 10, 110, 580, 100, BitOR($ES_MULTILINE, $ES_WANTRETURN))
    [...]
    GUICtrlSetData($lblEmail, $CorpsEmail)
    Là, les retours à la ligne ne sont plus interprétés. A la place des carrés sont affichés !

    Du coup, le texte de cette zone est inexploitable

    Code : Tout sélectionner

    ClipPut(GUICtrlRead ($lblEmail, 1))
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème d'affichage des retours à la ligne dans EDIT

#4

Message par Tlem »

J'espère être sur la bonne piste. ;)

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Var1 = "Voici un texte" & @CRLF & "avec des retours chariot." & @CRLF & "Et comme on le constate, ca" & @CRLF & "fonctionne"
$Var2 = "Voici un texte" & @LF & "avec retour chariot." & @CR & "Et lines feed" & @LF & "qui ne fonctionne pas si non traité"

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 307, 402, 193, 125)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 289, 337, BitOR($ES_MULTILINE, $ES_WANTRETURN))
$Button1 = GUICtrlCreateButton("@CRLF", 10, 360, 80, 25, 0)
$Button2 = GUICtrlCreateButton("@LF et @CR", 100, 360, 80, 25, 0)
$Button3 = GUICtrlCreateButton("@LF et @CR Traités", 190, 360, 110, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        
        Case $Button1
            GUICtrlSetData($Edit1, $Var1)

        Case $Button2
            GUICtrlSetData($Edit1, $Var2)

        Case $Button3
            $Var2 = StringReplace($Var2, @CR, @CRLF)
            $Var2 = StringReplace($Var2, @LF, @CRLF)
                        GUICtrlSetData($Edit1, $Var2)

    EndSwitch
WEnd

 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre