Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Элементы GUIGUIRichLabel - Создание форматированного элемента Label (на основе RichEdit)
Разобрался наконец с принципом работы, все отлично, несовместимости со стандартной GUICtrlSetResizing() в одном окне GUI нет, видимо сам допускал ошибки.
С режимом $WS_EX_TRANSPARENT иногда только под управляемым тегами текстом появляется черный фон, пока точно сказать не могу, отложил на потом, использую READONLY ( убрал стиль $WS_EX_TRANSPARENT у RichEdit и убрал @SW_DISABLE) - проблем нет.
Пришлось закомментировать часть текста в функции __GUIRichLabel_WM_NOTIFY в Вашей последней библиотеке :
В этом случае начинает работать прокрутка в RichLabel когда текст не умещается в размер элемента, становится возможным выделять и копировать текст из элемента, начинают работать ссылки.
В ходовых испытаниях обнаружилась странность: последовательные группы Radio (созданные по GUICtrlCreateRadio() и GUIStartGroup() ) объединяются в одну, если перед ними создать RichLabel. Если после - то все нормально, но в том-то и дело, что последовательность создания произвольная.
Где-то пересекаются обработки системных сообщений, наверное. Все перепробовал - не могу разобраться.
В этом случае начинает работать прокрутка в RichLabel когда текст не умещается в размер элемента, становится возможным выделять и копировать текст из элемента, начинают работать ссылки.
#include <GuiConstantsEx.au3>
#include "GUIRichLabel.au3"
Global $test=1 ; если установить 0, то второй вариант
exsample()
func exsample()
Dim $radio[8]
$rx_menGUIIP=GUICreate("IP адрес", 220, 180)
if $test Then
$Rx_InfStatus0 = _GUICtrlRichLabel_Create($rx_menGUIIP, '<font color="red"> Выберите IP1 и IP2 адрес </font>', 10, 10, 200, 20)
EndIf
;GUIStartGroup($rx_menGUIIP) ;"странность" возникает если не указана эта строка
$radio[0] = GUICtrlCreateRadio("192.168.0.0", 20, 40)
$radio[1] = GUICtrlCreateRadio("192.168.0.1", 20, 60)
$radio[2] = GUICtrlCreateRadio("192.168.0.2", 20, 80)
$radio[3] = GUICtrlCreateRadio("192.168.0.3", 20,100)
GUIStartGroup($rx_menGUIIP)
$radio[4] = GUICtrlCreateRadio("192.168.8.0", 120, 40)
$radio[5] = GUICtrlCreateRadio("192.168.8.1", 120, 60)
$radio[6] = GUICtrlCreateRadio("192.168.8.2", 120, 80)
$radio[7] = GUICtrlCreateRadio("192.168.8.3", 120,100)
$but = GUICtrlCreateButton("OK", 80, 150, 60, 20)
if Not $test Then
$Rx_InfStatus0 = _GUICtrlRichLabel_Create($rx_menGUIIP, '<font color="red"> Выберите IP1 и IP2 адрес </font>', 10, 130, 200, 20)
EndIf
GUICtrlSetState($radio[1], $GUI_CHECKED)
GUICtrlSetState($radio[6], $GUI_CHECKED)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE , $but
Exit
EndSwitch
WEnd
EndFunc
В принципе, ничего изменять не надо. Пока делал пример - нашел выход. Уже переделываю свой скрипт, для динамического отслеживания в каждого первого элемента GUICtrlCreateRadio для вставки перед ним GUIStartGroup (раньше прокатывало так, но это моя неопытность).
(Прошу прощения за последний вопрос - он крайне некорректный.)
То, что было убрано, - это большая часть возможностей Вашего RichLabel. Считаю, что RichLabel вполне успешный самостоятельный элемент кода, который можно включать в комплект установки AutoIt, конечно совместно с библиотекой GUICtrlSetResizingEx.au3. Это очень упрощает реализацию своих идей людям, которые не владеют синтаксисом разметки RTF (я думаю таких 99,9..9%). Единственный мелкий недостаток - надо полностью прописывать названия аргументов <font ..
Работает четко, но есть ньюанс. Если кто будет использовать скроллинг окна, чтобы не тратить время, сразу используйте библиотеку GUIScrollbars_Ex UDF от Melba23: https://www.autoitscript.com/forum/topic/113723-scrollbars-made-easy-new-version-13-may-18/ - корректно работает с RichLabel и не только, в отличии от GuiScrollBars.au3, входящей в комплект поставки (тестировалась по примерам - не видит, не определяет размеров и бессмысленно смещает RichLabel при изменении размеров окон).
И еще один вопрос-просьба-или помощь к CreatoR:
Часто возникает ситуация - окно создано для определенного разрешения экрана, или пользователь загнал в него слишком много элементов.
Желательно сохранить, например описание и кнопки управления на своем месте, а то, что не уместилось (при запуске на устройстве с меньшим разрешением), включая элементы RichLabel, определить частью окна со скроллингом, т.е. организовать скроллинг части окна.
Самое простое решение, которое напрашивается, - это встроенное дочернее окно с элементами управления и скроллингом - нет проблем. Но при изменении размеров (Resizing) основного окна, такое окно ведет себя абсолютно независимо с вылетом из основного окна. Сердцем чувствую и умом понимаю, что принцип в GUICtrlSetResizingEx.au3 позволяет решить задачу, но как грамотно это сделать - сочетание RichLabel и Resizing дочернего окна в окне в одной библиотеке, - тут прошу видение, решение или помощь автора.
это в _GUICtrlRichLabel_Create нужно заменить.
Тогда при большом тексте появится скролл.
Но опять таки, это в первую очередь Label, т.е статический элемент.
Это очень хорошо!
Когда я писал о скроллинге окна (выше), я не имел ввиду скролл в элементе RichLabel - с этим все в порядке. Речь шла о окне с изменяемыми размерами, созданном GuiCreate и содержащем различные элементы, включая RichLabel. Точнее о скроллинге части такого окна, например такой структуры:
============начало окна с изменяемым размером ($WS_SIZEBOX)
...RichLabel... Некое описание (статическая часть)
=======================начало части окна со скроллом
...RichLabel... Промпт (скроллируемая масштабируемая часть)
...Input..
...RichLabel... Промпт
...CheckBox..
...RichLabel... Промпт
...Combo..
...
=======================конец части окна со скроллом
...RichLabel... Подсказка по выбранному элементу выше (статическая часть)
..Button.. ..Button.. ..Button..
============конец окна с изменяемым размером
Задача просто решается при использовании встроенного дочернего окна и библиотеки от Melba23 (ссылка выше). НО, такое окно "отвязанное" от основного окна, живет само по себе при изменении размеров основного окна.
Не нашел каких либо решений и думаю, что лучшим способом будет делать так, как Вы поступаете с RichEdit в своих библиотеках RichLabel и ResizingEx.
Возможно ли включить дополнительную функцию, создающую и регистрирующую дочернее окно в библиотеку RichLabel, что бы не плодить дополнительные обработчики сообщений винды и "поставить на место" дочернее окно ?
Его можно привязать если грамотно создать (стили, дочеринство и т.д.)
Но я вообще не понимаю как это связано с данной темой?
Я тебе советую создать новую тему и изложить всю суть задачи (с примерами) того, что ты пытаешься реализовать.
Я вообще вижу единственное решение для правильного позиционирования "резинового" дочернего окна (по аналогии с RichEdit) внутри основного при изменении размеров основного только при использовании Ваших библиотек, о которых идет речь в данной теме. Могу ошибаться. Пока пробую варианты.
Дополнительно выкладываю в "копилку примеров библиотеки" иллюстацию возможностей прокрутки реально "нагруженного" тегами RichLabel - Example #5.
Example #4 - демонстрация клика по ссылкам - пока под вопросом.