Page 1 sur 1

Probleme de retour a la ligne

Posté : dim. 10 avr. 2022 09:12
par YuChan
Bonjour,

J'ai un petit UDDF que j'ai trouvé sur google etr ma question est :
- Comment faire un retour a la ligne si le texte et long ?

Voici le lien de l'udf :
viewtopic.php?t=4624c

Dans mon cassa coupe le texte ou bien sa m'ajoute la scroll bar selon ce que j'edit

Code : Tout sélectionner

$LL_hListView = _GUICtrlListView_Create($LL_GUI, "", 1, 1, 200, 200, $LVS_NOCOLUMNHEADER + $LVS_REport, -1, True)
Si vous pouvez m'aider svp se serai gentil.

CDT

Re: Probleme de retour a la ligne

Posté : dim. 10 avr. 2022 10:35
par mikell
L'UDF utilise une listview
De base, les items d'une listview ne sont pas multi-line, pas de retour à la ligne possible
Donc 3 solutions :
- faire des textes courts
- si le texte est long l'afficher sur 2 items successifs
- utiliser la magnifique UDF ListviewMultilineItems de LarsJ

Re: Probleme de retour a la ligne

Posté : dim. 10 avr. 2022 11:59
par YuChan
Désolé mais la tu ma perdu ...

Je vois pas comment faire 2 ligne de texte avec ton UDF simplement.

Et d'après ce que je vois c'est que tout est ecrit a la main, pas de fonction simple.

Si tu pouvais m'aider se serai bien.

CDT

Re: Probleme de retour a la ligne

Posté : dim. 10 avr. 2022 15:31
par mikell
Hum. Si tu as trouvé ma réponse trop compliquée, alors je n'ai qu'un conseil à te donner : oublie la Listview, et utilise un controle Edit pour faire ton log

Re: Probleme de retour a la ligne

Posté : lun. 11 avr. 2022 12:49
par YuChan
Je veux bien utiliser mon ancien system de control edit mais comment mettre des images dessus comme pour listview ?

Car c'est vraiment pas beau a voir du texte brute.

CDT

Re: Probleme de retour a la ligne

Posté : lun. 11 avr. 2022 18:04
par walkson
Bonjour,
On tourne en rond !
Avec un simple édit, ce n'est pas possible. Il faut passer par _GUICtrlRichEdit_Create()

Code : Tout sélectionner

#include <FileConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>
$hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 520, 550, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 500, 490, _
            BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
$idBtnExit = GUICtrlCreateButton("Exit", 10, 510, 40, 30)
GUISetState(@SW_SHOW)
$file = FileOpenDialog("",@DesktopDir,"image(*.bmp)")
If @error Then Exit
$text = "mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte mon texte "
$read = ReadBmpToRtf($file,"ICI ",@TAB & $text)
_GUICtrlRichEdit_InsertText($hRichEdit, "Inserting image..." & @LF & @LF)
_GUICtrlRichEdit_AppendText($hRichEdit ,$read)
_GUICtrlRichEdit_AppendText($hRichEdit ,@LF & @LF )
_GUICtrlRichEdit_SetCharColor($hRichEdit, 0x0000ff)
_GUICtrlRichEdit_SetFont($hRichEdit,30)
_GUICtrlRichEdit_AppendText($hRichEdit ,"Done.")
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idBtnExit
                _GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
                GUIDelete()
                Exit
        EndSwitch
    WEnd

Func ReadBmpToRtf($sBmpFilspc, $textavant = "",$textapres = "")
	Local $hFile, $sRtf
	$hFile = FileOpen($sBmpFilspc, $FO_BINARY)
	If FileRead($hFile, 2) <> "0x424D" Then Return SetError(1, 0, "")
	FileRead($hFile, 12)
	$sRtf = '{\rtf1{\fonttbl{\f0\fswiss Calibri;}{\colortbl ;\red155\green0\blue255;\red255\green0\blue50;}}\fs24\f0\cf1'&$textavant&'\ql{\pict\dibitmap ' & Hex(FileRead($hFile)) & '}'&$textapres&'\par}' ;\cfN Foreground color\fsN Font size\ql = left \qc = centered http://www.biblioscape.com/rtf15_spec.htm
	; \cf1 pour \red155\green0\blue211 \cf2 pour \red255\green0\blue50 \cf0 pas de couleur
	FileClose($hFile)
	Return $sRtf
EndFunc   ;==>ReadBmpToRtf
Avec cette méthode on utilise uniquement des bitmaps (.bmp)

Re: Probleme de retour a la ligne

Posté : lun. 11 avr. 2022 21:59
par mikell
YuChan a écrit : lun. 11 avr. 2022 12:49c'est vraiment pas beau a voir du texte brute.
C'est vrai ...
Tu dois faire un choix : avoir un truc visuellement pas terrible mais facile à coder, ou alors faire du beau mais là il va falloir bosser ^^
Sachant que personne ne fera le code à ta place (sauf peut-être walkson mais bon... :mrgreen: )

Donc je vais me répéter avec plus de détails
A ta place, je choisirais la listview avec la solution n°2 de mon post précédent. En pratique, ça veut dire que si une ligne est trop longue pour rentrer dans un item, alors tu la coupes à l'endroit qui va bien et tu mets ce qui dépasse dans l'item suivant (sans mettre d'icône à cet item)
C'est simple à faire et esthétiquement tout à fait satisfaisant

Par exemple, pour couper le texte, tu peux utiliser l'udf StringSize de Melba (ou un regex, etc)
Et dans l'udf de tim "udf_log.au3", tu peux juste remplacer cette ligne
Func _Log_Gui_Add($LL_Texte, $LL_icon)
par ça
Func _Log_Gui_Add($LL_Texte, $LL_icon = 99999)
Dans le script, ne pas mettre le paramètre $LL_icon dans _Log_Gui_Add() permet alors de faire un item sans icone

Re: Probleme de retour a la ligne

Posté : mar. 12 avr. 2022 13:09
par YuChan
Merci.

Donc impossible de creer plusieurs ligne avec une icon.

Donc ma seul solution reste Edit et sans image.
Ou alors avec image et listview mais pas de multi ligne.

Par contre mikell ta soltion je la comprends pas .

Je pense avoir resumé.