C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Вставка URL в RichEdit, Как грамотно вставить ссылку в RichEdit?
Lazy
Отправлено: 15.06.2004, 11:26


Ученик-кочегар

Группа: Участник
Сообщений: 12



Собственно как просто гиперссылку вставить в RichEdit — понятно.
А вот как сделать так, чтобы текст в окне писался один, при клике на него ссылка бралась другая.
В гипертексте я бы сделал так:
<а href="http://www.myurl.ru/">Крутой сайт
А что надо указать для Richedit'а? Кто-нибудь так делал?

Отредактировано Lazy — 15/06/2004, 12:33
Pers
Отправлено: 17.06.2004, 09:42


Не зарегистрирован







Вот, вот, очень интересный вопрос. У меня аналогичная проблема. И что-то пока никто не отвечает. Неужто никто не знает? Помогите, плиз, подайте идейку какую-нибудь.
AVC
Отправлено: 18.06.2004, 16:24


Ветеран

Группа: Модератор
Сообщений: 1583



Есть тута
Pers
Отправлено: 18.06.2004, 16:35


Не зарегистрирован







Нет, тама рассказывается о том, как вообще вставить гиперссылку в RichEdit. Будет в тексте написано www.mysite.ru — оно распознается и при клике загрузится. Но надо чтобы был написан текст один, а сайт грузился — другой. Чего-то я не понимаю sad.gif((
AVC
Отправлено: 18.06.2004, 16:50


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

ShellExecute(Handle, "open", RichEdit1->SelText.c_str(),
 0, 0, SW_SHOWNORMAL);


Если я что либо понимаю, то написав вместо RichEdit1->SelText.c_str() нужную вам ссылку вы таки добьётесь желаемого эффекта.
Lazy
Отправлено: 21.06.2004, 11:44


Ученик-кочегар

Группа: Участник
Сообщений: 12



Осталась сущая фигня — чтобы RichEdit начал показывать обычный текст как гиперссылку и реагировать на него как на гиперссылку. А вот это и не получается сделать. Только если явно писать http://mysite.com sad.gif
AVC
Отправлено: 21.06.2004, 12:06


Ветеран

Группа: Модератор
Сообщений: 1583



Елки палки, я просто увидел ссылку с подходящим названием и переслал её вам, а вы меня подталкиваете на изучение формата RTF2. Ладно, разберусь — сообщу.
AVC
Отправлено: 21.06.2004, 14:17


Ветеран

Группа: Модератор
Сообщений: 1583



Вот. Небольшие эксперименты с Word'ом дают такой результат (Word использует поля для организации ссылок)
CODE

{\rtf1\ansi\ansicpg1251\uc1
{\fonttbl
{\f0 Arial;}
}
{\colortbl
\red0\green0\blue255;
}
{\info
{\author AVC}
}
\f0\cf0
Some text
{\field
{\*\fldinst
 {\f0 HYPERLINK "http://www.yandex.ru" }
}
{\fldrslt
 {\f0\b\i\ul\cf1 link sample }
}
}
Other text
}

Для получения красивого текста переводы строк надо убрать. Будет ли работать во встроеном rtf не проверял, но в Word'e работает.

Так устраивает?
Lazy
Отправлено: 21.06.2004, 14:38


Ученик-кочегар

Группа: Участник
Сообщений: 12



1. И никуда мы не подталкиваем, а спрашиваем тех, кто уже знает. Однако спасибо за проявленное внимание.
2. если загрузить описанный кусок в RichEdit, то получается следующее:
Some text link sample http://www.yandex.ru Other text

Самое интересное, что WordPad выдает тоже самое. Мои изыскания в этой области наводят меня на мысль о том, что так умеет делать только Ворд, а стандартный RichEdit понимает только явно указанные гиперссылки. sad.gif
Ну и фиг с ним.smile.gif

Отредактировано Lazy — 21/06/2004, 15:53
AVC
Отправлено: 21.06.2004, 15:15


Ветеран

Группа: Модератор
Сообщений: 1583



Возможно с полями умеет работать только Word.
Если бы мне надо было бы это делать я бы шел по пути:
Не использовать ни каких En_Link и структур _elink — приложение становится зависимым от инсталяшек на машине клиента. Вместо этого я бы написал текст, соединенный сиволами _, отформатировал бы его цвет, подчеркивание. При нажатии левой мышкой выделял бы сплошной текст, находил связанный с ним адрес и далее ShellExecute. Теряется указатель в виде пальчика и hint с адресом — здесь можно поковыряться (пути решения просматриваются).

Отредактировано AVC — 21/06/2004, 15:20
Lazy
Отправлено: 21.06.2004, 15:36


Ученик-кочегар

Группа: Участник
Сообщений: 12



Понятно, что если писать "руками"  — оно всегда гарантирует поведение объекта. Но хотелось то воспользоваться стандартной функциональностью.
Ладно будем писать TURLRichEdit wink.gif
AVC
Отправлено: 21.06.2004, 17:16


Ветеран

Группа: Модератор
Сообщений: 1583



Ни как не могу запустить пример Т.Сороки (из статьи). Если получится проверьте идею писать в rtf
CODE

{\rtf2\ansi\ansicpg1251\uc1{\fonttbl {\f0 Arial;}}
{\colortbl \red0\green0\blue255;}
\f0\cf0
Some text
{\field {\*\fldinst  {HYPERLINK}}
{\fldrslt {\f0\b\i\ul\cf1 link sample }}
}
Other text
}

Если в WndProc перед ShellExecute REdit->SelectedText == "link sample" то задача решена.

Вернуться в Вопросы программирования в C++Builder