RichEdit VCL и URL. Обходные пути для проблем OnPaint - PullRequest
0 голосов
/ 31 января 2010

Моя проблема в том, что проги Delphi до смерти напуганы - Rich Edit в Windows (версии XP и pre-XP).

Положение:

Я добавил EM_AUTOURLDETECTION в OnCreate формы. Цель -> RichEdit1. Затем у меня есть форма, которая «свернулась» после показа формы. RichEdit Control является сатинированным, видимым и активным, но он «скрыт», поскольку окно формы свернуто

Я могу развернуть и свернуть форму, используя Button1 и изменяя свойства Constraints и Size.

После первого расширения формы URL-адрес внутри элемента управления RichEdit1 подсвечивается. Но после второго, третьего, четвертого и т. Д ... раз, когда я сверну и разверну форму, элемент управления RichEdit1 больше не выделяет URL.

Я пробовал сообщения EM_SETTEXTMODE, также WM_UPDATEUISTATE, а также базовое сообщение WM_TEXT -> не повезло. Кажется, что это слияние действительно работает (позволяет обнаруживать) при отправке нажатий клавиш (виртуальных кодов клавиш), но не при изменении текста. Кроме того - я думаю переписать код, чтобы сделать RichEdit Control динамичным. Это решит проблему?

Может быть, решение состоит в том, чтобы переопределить метод OnPaint / OnDraw, чтобы избежать потери подсветки (форматирования) при свертывании или развертывании формы?

Странно, что моя документация Embarcadero говорит, что эта функция должна работать в любой момент, когда текст был изменен. Почему это не работает?

Любая помощь приветствуется. Я делаю эту вики-страницу сообщества, потому что это обычная проблема, и вместе мы можем найти решение, верно? :)

Также - последующие действия и связанный с ними Вопрос:

Переопределить OnPaint

Как автоматически определять URL-адреса в RichEdit 2.0?

http://www.vbforums.com/archive/index.php/t-59959.html

1 Ответ

0 голосов
/ 31 января 2010

Я не уверен, но воссоздается ли окно рихедита при переходе от скрытия к шоу? В этом случае вы можете создать свой собственный производный класс TRichEdit, переопределить функцию, которая создает дескриптор WIndows (TWinControl.CreateHandle), и добавить туда EM_AUTOURLDETECTION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...