Что нового

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

Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Лучше через стандартный RichEdit, позже сделаю тестовую версию на его основе.
 

Viktor1703

AutoIT Гуру
Ну тогда другое дело :smile:


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

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

 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Вот с использованием «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

<Блуждающий...>
Супер! Вот только я что-то не могу очистить и снова что-то запихать в этот 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!
Команда форума
Администратор
Bloodrinker [?]
как быть с RichEdit?
Пока только через пересоздание элемента:

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


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

Bloodrinker

<Блуждающий...>
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

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

CreatoR

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

Bloodrinker

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

CreatoR

Must AutoIt!
Команда форума
Администратор
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!
Команда форума
Администратор
В общем вот, добавил _GUICtrlRichLabel_SetData и _GUICtrlRichLabel_SetPos.
Также в теге font теперь поддерживается параметр align - выравнивание текста (текущей строки/абзаца).
 
Верх