Что нового

Сохранить форматирование текста при вставке в Label

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Edit и Label одинаковых размеров.
Сохраняю текст из Edit в ini . заменяю пробелы и символы переноса
Код:
$sSP = StringReplace($sSP, @CRLF, '\n')
$sSP = StringReplace($sSP, ' ', '\h')

Считываю из ini, меняю все наоборот и вставляю в label. В Edit в первой строке, в начале, были пробелы, чтобы заголовок текста был про середине. После считывания и вставки в Label визуально заголовок текста сдвинут вправо еще больше, как-будто стало больше пробелов. с символами переноса и пробелами между словами проблем нет
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
$sSP = StringReplace($sSP, @CRLF, '\r\n')

Может быть так? :smile:
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
alex33
этим кодом заменяются символы переноса. в моем случае проблема с пробелами в начале текста. сохраняю из edit в ini. восстанавливаю в label
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Выкладывайте рабочий пример.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
пока писал пример, понял причину визуального расхождения - разный размер шрифта
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
$Form1 = GUICreate("Form1", 414, 359, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 369, 289, $ES_MULTILINE + $ES_WANTRETURN, $WS_EX_CLIENTEDGE)
$Button1 = GUICtrlCreateButton("Button1", 296, 312, 75, 25)
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			GUIDelete($Form1)
			ExitLoop
		Case $Button1
			$sSP = GUICtrlRead($Edit1)
			$sSP = StringReplace($sSP, @CRLF, '\n')
			$sSP = StringReplace($sSP, ' ', '\h')
			IniWrite('inf.ini', 'text', 'sp', $sSP)
	EndSwitch
WEnd


$Form1 = GUICreate("Form1", 414, 359, 192, 124)
$lb = GUICtrlCreateLabel("", 8, 8, 369, 289, $SS_LEFT)
;GUICtrlSetFont(-1, 9, 800, 0, "Georgia"); если установить шрифт, то будет визуальная разница
GUISetState(@SW_SHOW)
$sSP = IniRead('inf.ini', 'text', 'sp', '')
$sSP = StringReplace($sSP, '\n', @CRLF)
$sSP = StringReplace($sSP, '\h', ' ')
GUICtrlSetData($lb, $sSP)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
в моем случае это не критично, я сделаю одинаковый шрифт
но как быть если шрифт разный?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это должно помочь. Либо шрифт подгоняем, либо Label.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$Form1 = GUICreate("Form1", 414, 359, 192, 124)
$lb = GUICtrlCreateLabel("", 8, 8, 369, 289, $SS_LEFT)
GUICtrlSetFont(-1, 9, 800, 0, "Georgia")
GUISetState(@SW_SHOW)
$sSP = IniRead('inf.ini', 'text', 'sp', '')
$sSP = StringReplace($sSP, '\n', @CRLF)
$sSP = StringReplace($sSP, '\h', ' ')
$Size = _GetTabbedStringSizeEx(-1, $sSP, 1)
If Not @error Then
	GUICtrlSetPos($lb, -1, -1, $Size[0], $Size[1])
	GUICtrlSetData($lb, $sSP)
EndIf
все ок, спасибо :smile:
как я понял, здесь идет подгонка контрола под текст
 
Верх