Что нового

GUITFLabel - Создание форматированного элемента Label

Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Лучше через стандартный RichEdit, позже сделаю тестовую версию на его основе.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Ну тогда другое дело :smile:


Добавлено:
Сообщение автоматически объединено:

Вот такое у меня получилось на основе Html

 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вот с использованием «RichLabel» (т.н новый элемент :laugh: ):



Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

#include "GUIRichLabel.au3"

$hGUI = GUICreate("Form1", 400, 100)

$sData = '<font color="Brown">Мороз и солнце; день чудесный!</font> <font color="Gray">Еще ты дремлешь, друг прелестный Пора, красавица, проснись:</font> <font color="Green">Открой сомкнуты негой взоры Навстречу северной Авроры, Звездою севера явись!</font>'

$aRichEdit = _GUICtrlRichLabel_Create($hGUI, $sData, 10, 20, 380, 70)

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd


GUIRichLabel.au3 во вложении.
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Супер! Вот только я что-то не могу очистить и снова что-то запихать в этот RichLabel. Точнее запихиваю другой текст, но все равно отображается старый RichLabel :scratch:
Т е если бы я работал со стандартным label, то в ф-ии у меня было бы вот это:
Код:
If Not IsDeclared("nLabel2") then
 	$nLabel2 = GUICtrlCreateLabel ($MainStr, 16, 16, 580, 121)
EndIf
GUICtrlSetData ( $nLabel2, $MainStr)

Т е при каждом вызове ф-ии я записывал в label изменяющуюся при каждом вызофе ф-ии переменную $MainStr, а как быть с RichEdit?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Bloodrinker [?]
как быть с RichEdit?
Пока только через пересоздание элемента:

Код:
_GUIRichLabel_Destroy($hRichLabel)
$hRichLabel = _GUIRichLabel_Create($hGUI, $MainStr, 16, 16, 580, 121)


Позже попробую сделать возможность задавать текст элементу.
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Creator, Наверное все-таки вот так) :smile:
Код:
_GUICtrlRichLabel_Destroy($hRichLabel)
$hRichLabel = _GUICtrlRichLabel_Create($hGUI, $MainStr, 16, 16, 580, 121)

хм... а тогда почему так не работает?

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <GUIRichLabel.au3>

$sLabel_Data1='<font color="Brown">Мороз и солнце; день чудесный!</font> <font color="Gray">Еще ты дремлешь, друг прелестный Пора, красавица, проснись:</font> <font color="Green">Открой сомкнуты негой взоры Навстречу северной Авроры, Звездою севера явись!</font>'

$hGUI = GUICreate("Form1", 400, 100)

$aRichEdit = _GUICtrlRichLabel_Create($hGUI, $sLabel_Data1, 10, 20, 380, 70)
GUISetState(@SW_SHOW, $hGUI)
Sleep(3000)
_GUICtrlRichLabel_Destroy($aRichEdit)
$aRichEdit = _GUICtrlRichLabel_Create($hGUI, $sLabel_Data1, 10, 20, 380, 70)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Парадокс! :laugh: У меня отображает только 1-й _GUICtrlRichLabel_Create потом просто очищает форму и ничего не показывает. Вы наверно не правильно поняли, 2-й _GUICtrlRichLabel_Create не собирается отображаться. тем самым форма остается пустой. Не пойму почему
PS: Дайте мне ваш exe. попробую.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Bloodrinker [?]
У меня отображает только 1-й _GUICtrlRichLabel_Create потом просто очищает форму и ничего не показывает.
Версия AutoIt? 3.3.6.1 как и указанно в профиле?
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
и еще косячек. Если в середине текста есть тег с атрибутом bkcolor, то заливается весь текст до конца, вне зависимости от того где закрылся тег.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Bloodrinker [?]
еще косячек. Если в середине текста есть тег с атрибутом bkcolor, то заливается весь текст до конца, вне зависимости от того где закрылся тег.
Пример. У меня такого нет.

И кстати насчёт второго RichEdit, это бага в новой версии, там неправильная проверка окна:

Код:
If Not _WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName) Then Return SetError(1, 0, 0)

а должно быть так (как в старой версии):
Код:
If Not IsHwnd($hWnd) Then Return SetError(1, 0, 0)

Не знаю зачем они это изменили.

Исправить можно добавив $_GRE_sRTFClassName = '' перед созданием RichEdit в функции _GUICtrlRichLabel_Create.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
В общем вот, добавил _GUICtrlRichLabel_SetData и _GUICtrlRichLabel_SetPos.
Также в теге font теперь поддерживается параметр align - выравнивание текста (текущей строки/абзаца).
 
Верх