![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ссылка в тексте [D7, XP]
uno-84 © (2008-06-24 15:37:00)Здравствуйте, подскажите пожалуйста! Каким образом мне сделать, что бы в RichEdite ссылки подсвечивалися синим цветом, причем помимо ссылок RichEdit содержет еще и текст. Заранее спасибо!
Palladin (2008-06-26 10:07:00) [1]инициализируй RichEdit, что бы он отправлял EN_LINK
Var
f:Cardinal;
f:=SendMessage(TRichEdit.Handle,EM_GETEVENTMASK,0,0);
f:=f or ENM_LINK;
SendMessage(TRichEdit.Handle,EM_SETEVENTMASK,0,f);
uno-84 (2008-06-26 09:37:00) [2]Нашел себе:
procedure TNewMesForm.WndProc(var Message: TMessage);
var
p: TENLink;
strURL: String;
begin
if (Message.Msg = WM_NOTIFY) then
begin
if (PNMHDR(Message.LParam).code = EN_LINK) then
begin
p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
if (p.msg = WM_LBUTTONDOWN) then
begin
SendMessage(MesRedit.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
strURL := MesRedit.SelText;
ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
end
end
end;
inherited;
end;
Но ссылки все ровно не открываются, не знаете почему?
{RASkov} (2008-06-26 00:55:00) [3]> [6] uno-84 (25.06.08 13:30)
>OpenDialog1 := TOpenDialog.Create(self);
:)
> [12] uno-84 (25.06.08 16:22)
http://yandex.ru/yandsearch?clid=9582&text=EM_AUTOURLDETECT:)
http://www.delphisources.ru/pages/faq/base/re_url_highlight.html
uno-84 (2008-06-25 16:22:00) [4]Спасибо огромное, теперь все нормально,)))) буду искать как обработать клик по ссылке
Palladin (2008-06-25 15:45:00) [5]StringReplace + F1
uno-84 (2008-06-25 15:43:00) [6]Пробел - Char, а %20 уже String, могули я заменить на %?
Palladin (2008-06-25 14:19:00) [7]а давай сначала попробуешь?
uno-84 (2008-06-25 14:12:00) [8]просто по этой ссылке нужно переходить на сетевой ресурс и открывать, а имя файло уже получается измененно
Palladin (2008-06-25 13:32:00) [9]заменяй пробелы на "%20"
uno-84 (2008-06-25 13:30:00) [10]Но у меня возник еще один вопрос, как ссылку в RichEdit я записываю полное имя файла
procedure TNewMesForm.UrBtnClick(Sender: TObject);
begin
SendMessage(Mesredit.Handle, EM_AUTOURLDETECT, Integer(True), 0);
OpenDialog1 := TOpenDialog.Create(self);
OpenDialog1.Title := 'Файл';
OpenDialog1.InitialDir := 'S:\';
If OpenDialog1.Execute then
begin
Mesredit.Text := MesRedit.Text + '<' + ' ' + 'http:\\' + OpenDialog1.FileName + '>';
end;
end;
И дело в том, что если имя файла имеет пробел ссылка после пробела не поддерживется. И имя получается не полной
{RASkov} (2008-06-25 13:21:00) [11]> [2] uno-84 (25.06.08 10:59)
Это не ошибка.... и кстати, как думаешь, Palladin или я сами придумали эту константу? нет, но в делфи есть поиск, где можно указать директорию с VCL и все бы нашлось.... Нет, я не к тому, что бы как-то повыпендриваться, а к тому, что если пользоваться поиском, то при нахождении одного ты видишь и остальные ответы..... но ты не пользуешься поиском и соответственно у тебя сейчас будет вопрос как обработать клик по ссылке, так? :)
ЗЫЖ Поиск бывает не только на жестком диске, а в интернете есть практически все, что и у тебя на ХДД
:о)
uno-84 (2008-06-25 11:24:00) [12]Спасибо большое
Palladin (2008-06-25 11:12:00) [13]Const
EM_AUTOURLDETECT=WM_USER+91
uno-84 (2008-06-25 10:59:00) [14]не распознает EM_AUTOURLDETECT, как мне избавиться от этой ошибки
{RASkov} (2008-06-24 16:56:00) [15]> [0] uno-84 (24.06.08 15:37)
> в RichEdite ссылки подсвечивалися синим цветом
SendMessage(RichEdit.Handle, EM_AUTOURLDETECT, Integer(True), 0);