Page 1 sur 1

[R] Lignes vides non souhaitées dans Contrôle Edit

Posté : dim. 24 mai 2020 18:51
par GMH
Bonjour,

Ma fonction ci-dessous est destinée à récupérer le contenu d'un premier Contrôle Edit, pour en extraire le premier paragraphe, récupérer le contenu d'un second Contrôle Edit, extraire les derniers paragraphes du premier Contrôle Edit, et enfin effacer le contenu du premier Contrôle Edit pour y afficher le premier paragraphe du premier Contrôle Edit, puis le seul paragraphe du second Contrôle Edit, et enfin les deuxième au cinquième paragraphes du premier Contrôle Edit.

Contenu du premier Contrôle Edit :

Ceci est le premier paragraphe du premier Contrôle Edit.
Ceci est le deuxième paragraphe du premier Contrôle Edit.
Ceci est le troisième paragraphe du premier Contrôle Edit.
Ceci est le quatrième paragraphe du premier Contrôle Edit.
Ceci est le cinquième paragraphe du premier Contrôle Edit.

Contenu du second Contrôle Edit :

Ceci est le seul paragraphe du second Contrôle Edit.

===============

Voici ce que je souhaiterais afficher dans le premier Contrôle Edit :

Ceci est le premier paragraphe du premier Contrôle Edit.
(ici une ligne vide)
Ceci est le seul paragraphe du second Contrôle Edit
(ici une ligne vide)
Ceci est le deuxième paragraphe du premier Contrôle Edit.
Ceci est le troisième paragraphe du premier Contrôle Edit.
Ceci est le quatrième paragraphe du premier Contrôle Edit.
Ceci est le cinquième paragraphe du premier Contrôle Edit.

===============

Alors que j'obtiens ceci :

Ceci est le premier paragraphe du premier Contrôle Edit.
(ici une ligne vide)
Ceci est le seul paragraphe du second Contrôle Edit
(ici une ligne vide)
Ceci est le deuxième paragraphe du premier Contrôle Edit.
(ici une ligne vide non souhaitée)
Ceci est le troisième paragraphe du premier Contrôle Edit.
(ici une ligne vide non souhaitée)
Ceci est le quatrième paragraphe du premier Contrôle Edit.
(ici une ligne vide non souhaitée)
Ceci est le cinquième paragraphe du premier Contrôle Edit.


Voici la fonction :

Code : Tout sélectionner

Local $contenuControleEdit_1 = GUICtrlRead($controleEdit_1)
	Local $contenuControleEdit_2 = GUICtrlRead($controleEdit_2)
	GUICtrlSetData($controleEdit_1, "")
	Local $splitRecup = StringSplit($contenuControleEdit_1, @CRLF)
	GUICtrlSetData($controleEdit_1,$splitRecup[1] & @CRLF & @CRLF & $contenuControleEdit_2 & @CRLF)
	For $i = 3 To UBound($splitRecup) - 1
		GUICtrlSetData($controleEdit_1 & $splitRecup[$i] & @CRLF,1)
	Next
Quoiqu'ayant essayé @CRLF, @CR, @LF, chr(10) & chr(13), les paragraphes du deuxième au cinquième paragraphes du premier Contrôle Edit sont séparés par une ligne vide, ce que je ne souhaite pas. Lorsque je n'utilise pas ces codes, les deuxième au cinquième paragraphes du premier Contrôle Edit s'affichent à la queue-leu-leu.

Je vous remercie de m'aider à solutionner la question.

Re: [..] Lignes vides non souhaitées dans Contrôle Edit

Posté : dim. 24 mai 2020 20:46
par TommyDDR
Qu'entendez vous par paragraphe ? Un retour à la ligne ?

Vous souhaitez insérer le contenu complet du 2nd edit après le 1er retour à la ligne du 1er (en y ajoutant 1 ligne vide au dessus et en dessous) ?

Pour information, vous aurez beaucoup plus d'aide si votre code est exécutable sans devoir rajouter des choses dedans.
Malheureusement, nous ne pouvons pas prendre le temps de recréer complètement le code pour tester.
Même si ce n'est pas nécessaire à chaque fois, c'est toujours plus parlant de voir réellement un problème plutôt que de lire le code et l'exécuter dans notre tête ^^

PS : Vous avez de la chance, j'avais un peu de temps devant moi :
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)

Global $gui
Global $taille[2] = [300, 300]
Global $controleEdit_1, $controleEdit_2
Global $txt1 =    "Ceci est le premier paragraphe du premier Contrôle Edit." & @CRLF & _
            "Ceci est le deuxième paragraphe du premier Contrôle Edit." & @CRLF & _
            "Ceci est le troisième paragraphe du premier Contrôle Edit." & @CRLF & _
            "Ceci est le quatrième paragraphe du premier Contrôle Edit." & @CRLF & _
            "Ceci est le cinquième paragraphe du premier Contrôle Edit."
Global $txt2 = "Ceci est le seul paragraphe du second Contrôle Edit."

$gui = GUICreate("", $taille[0], $taille[1])
GUISetOnEvent($GUI_EVENT_CLOSE, "quit", $gui)
$controleEdit_1 = GUICtrlCreateEdit($txt1, 5, 5, 290, 140)
$controleEdit_2 = GUICtrlCreateEdit($txt2, 5, 150, 290, 145)
GUISetState(@SW_SHOW, $gui)



Local $contenuControleEdit_1 = GUICtrlRead($controleEdit_1)
Local $contenuControleEdit_2 = GUICtrlRead($controleEdit_2)
GUICtrlSetData($controleEdit_1, "")
Local $splitRecup = StringSplit($contenuControleEdit_1, @CRLF, 3)
Local $textTotal = $splitRecup[0] & @CRLF & @CRLF & $contenuControleEdit_2 & @CRLF & @CRLF
For $i = 1 To UBound($splitRecup) - 1
   $textTotal &= $splitRecup[$i] & @CRLF
Next
GUICtrlSetData($controleEdit_1, $textTotal)


While(True)
   Sleep(10)
WEnd

Func quit()
   Exit
EndFunc

Re: [..] Lignes vides non souhaitées dans Contrôle Edit

Posté : dim. 24 mai 2020 21:11
par mikell
From ze fichier d'aide, page StringSplit :

"Note that the macro @CRLF is actually a 2 character string, so unless the flag parameter to $STR_ENTIRESPLIT extra blank lines will be generated as the string is split on both @CR and @LF."

Image

Re: [..] Lignes vides non souhaitées dans Contrôle Edit

Posté : dim. 24 mai 2020 23:49
par Tlem

Re: [R] Lignes vides non souhaitées dans Contrôle Edit

Posté : mar. 26 mai 2020 10:32
par GMH
Tout était donc dans le flag ! Voilà une chose qui m'a toujours échappé. TommyDDR a choisi un flag à 3. Il cumule donc le 1 et le 2.

Le code de TommyDDR (merci d'avoir pris de votre temps pour l'écrire) utilise l'option Opt("MustDeclareVars", 1). Je suis allé voir son usage. Voilà encore une chose que je ne connaissais pas.

Grand merci à tous trois pour vos réponses, merci un peu tardif dû à des problèmes d'affichage du forum hier.