Page 1 sur 1

[R] Contrôle Edit non éditable

Posté : ven. 08 avr. 2016 20:04
par GMH
Bonjour,

A l'aide de la boucle suivante, je récupère dans la variable $Affichage des données présentes dans un fichier texte (variable $monFichierTxt ).

Tout se passe bien, l'Edit affiche toutes les données contenues dans la variable $Affichage.
Mais impossible ensuite de modifier l'affichage : je ne peux rien ajouter non plus, quoique je n'utilise pas le style $ES_READONLY dans ma fonction de création de l'Edit.

Quelle peut être la cause de ce problème ?

Code : Tout sélectionner

$Affichage = ""
While 1
	Local $Ligne = FileReadLine($monFichierTxt)
	If @Error = -1 Then ExitLoop
	Local $LigneSplit = StringSplit($Ligne,";")
	$Affichage = $Affichage & "NOM           : " & $LigneSplit[1] & @CRLF
	$Affichage = $Affichage & "PRENOM     : " & $LigneSplit[2] & @CRLF
	$Affichage = $Affichage & "NAISSANCE : " & $LigneSplit[3] & @CRLF
WEnd

FileClose($monFichierTxt) 
GUICtrlSetData($Editeur, $Affichage)
Je vous remercie.

Re: [..] Contrôle Edit non éditable

Posté : ven. 08 avr. 2016 20:46
par orax
Cette partie du code ne nous permet pas de voir l'origine du problème.
À mon avis, il faudrait voir la partie où les contrôles sont créés (en particulier l'Edit).

Re: [..] Contrôle Edit non éditable

Posté : ven. 08 avr. 2016 20:56
par GMH
Voici la construction de l'Edit :

Code : Tout sélectionner

Global $Editeur = GUICtrlCreateEdit("", 10, 350, 1290, 300)
Afin de soigner la présentation, j'aimerais que tous les "deux-points" soient alignés à l'affichage dans l'Edit. Lorsque je complète le premier mot de chaque ligne par des espaces, ceux-ci se réduisent à 1 seul à l'affichage.
Y a-t-il moyen de conserver ces espaces ?

Merci à vous

Re: [..] Contrôle Edit non éditable

Posté : sam. 09 avr. 2016 00:06
par orax
Pour ça il faut utiliser une police à chasse fixe. Courier, Consolas, ... => https://fr.wikipedia.org/wiki/Chasse_(typographie)

Code : Tout sélectionner

#include <FontConstants.au3>

$Affichage = ""
$Affichage = $Affichage & "NOM       : " & @CRLF
$Affichage = $Affichage & "PRENOM    : " & @CRLF
$Affichage = $Affichage & "NAISSANCE : " & @CRLF

$Editeur = GUICtrlCreateEdit("", 10, 350, 1290, 300)
GUICtrlSetFont(-1, 15, $FW_NORMAL, $GUI_FONTUNDER, "Courier New")
Pour le problème de l'Edit non éditable, je ne sais pas, je n'ai pas de réponse.

Re: [..] Contrôle Edit non éditable

Posté : sam. 09 avr. 2016 10:33
par GMH
La police à chasse fixe permet en effet de conserver les espaces. Merci !

Je crois avoir trouvé la raison de ce dysfonctionnement : Les données à afficher sont trop nombreuses pour l'Edit qui limite le nombre de caractères à afficher.
J'ai testé avec une boucle plus courte, et l'Edit devient éditable.

Je cherche une solution pour traiter le fichier en le découpant. A moins que rendre l'Edit illimité soit possible.

Re: [..] Contrôle Edit non éditable

Posté : sam. 09 avr. 2016 17:26
par mdanielm
Bonjour,
J'ai déjà eu ce problème plusieurs fois.
La fonction _GUICtrlEdit_SetLimitText() est faite pour augmenter la taille du texte saisi mais j'ai pu vérifier qu'elle ne fonctionne pas.
Si vous confirmez, mes soupçons se confirment!
Cordialement

Re: [..] Contrôle Edit non éditable

Posté : sam. 09 avr. 2016 17:35
par GMH
Bonjour et merci pour cette fonction.
Chez moi, elle fonctionne :

Code : Tout sélectionner

Global $Editeur = GUICtrlCreateEdit("", 10, 350, 1290, 300)
_GUICtrlEdit_SetLimitText($Editeur, 10000000)
Voilà que tout se résout en rien de temps ! Merci encore.

Re: [R] Contrôle Edit non éditable

Posté : sam. 09 avr. 2016 18:35
par orax
On pourrait mettre 0 pour définir la valeur maximale.
Et logiquement, les écritures suivantes sont équivalentes, si j'ai bien interprété ce qui est écrit sur EM_SETLIMITTEXT message.

Code : Tout sélectionner

_GUICtrlEdit_SetLimitText($Editeur, 0)
_GUICtrlEdit_SetLimitText($Editeur, -1)
_GUICtrlEdit_SetLimitText($Editeur, 0xFFFFFFFF)

Re: [R] Contrôle Edit non éditable

Posté : dim. 10 avr. 2016 09:17
par GMH
J'ai testé les 3 possibilités. Toutes trois rendent effectivement illimité le contenu de l'Edit.