Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как в RichEdit можно поставить ссылку ?


Автор: Radon 18.10.2005, 20:59
Как в RichEdit можно поставить ссылку ?

Пример имеем текст в RichEdit и мы хотим к одному слову добавить ссылку из инета
или мы копируем текст в RichEdit который имеет ссылку как сделать тат чтоб было как
в инете когда нажимаешь на текст с ссылкой он тебя автоматически переносит на я ты ссылку.
smile smile

Автор: Samhein 18.10.2005, 21:18
В TRichEdit врядли, мож в TRxRichEdit.
Ты когда нибудь видел в RTF тексте ссылки?

Автор: FRAGNATIC 18.10.2005, 22:46
Цитата
Ты когда нибудь видел в RTF тексте ссылки?

я да =)
\hlinkbase
http://www.biblioscape.com/rtf15_spec.htm

Автор: Rrader 19.10.2005, 06:35
Поюзайте поиск, я как-то рассказывал принцип smile

Автор: Radon 19.10.2005, 21:39
Samhein

Обясни что ты имел ввиду, примерчиком ?
smile

Автор: Samhein 19.10.2005, 21:42
Ты про что?

Автор: Radon 19.10.2005, 21:45
Про TRxRichEdit.
Что это такое?

Автор: Samhein 19.10.2005, 21:50
Это компонент! smile
В нем возможностей больше чем в RichEdit, но точно не знаю можноли в нем ссыки делать

Автор: Radon 19.10.2005, 21:55
Можеш показать пример smile
с этим компонентом

Автор: FRAGNATIC 19.10.2005, 22:00
в ртф мона ссылки забивать значит и в ричэдите можно!
просто посмотри как!

Автор: Samhein 19.10.2005, 22:01
Немогу, я с ним не работал....
Я же сказал что
Цитата
точно не знаю можноли в нем ссыки делать

Добавлено @ 22:02
А еще в RTF можно таблицы делать, только как их делать я примеров нигде не видел smile

Автор: FRAGNATIC 19.10.2005, 22:05
Samhein
я те дал линк на описание ртф =) там описано как и что делать =)

Автор: Samhein 19.10.2005, 22:06
ЧЕ ПРаВДА? Когда ты мне его давал?
Там наверное и про ссылки должно быть

Автор: FRAGNATIC 19.10.2005, 22:08
нет шутка
много ещё флеймить будем?
http://www.biblioscape.com/rtf15_spec.htm
ты в ворде напиши даже http://jjj.jj/ выдели и в контекстном меню будет "гиперсылка" и можно офрмить как ссылку
а для особо одорёных раскажу что в ворде ртф используется=)
Добавлено @ 22:09
а ну да не тебе давал) но всё ровно в этом топике причём процетировав твой пост =)
Добавлено @ 22:15
короче или делаем просто
качаем синэдит http://forum.vingrad.ru/index.php?showtopic=34080 там есть чисто подсетка ссылок !
или тогда разбираемся с ртф и как его юзать номано в ричэдите =)

Автор: Samhein 21.10.2005, 17:01
А можно ничего не качать и не разбирать. Просто берем код для подсетки ссылок из DRKB и все!

Код

{....} 

  protected 
    procedure WndProc(var Message: TMessage); override; 
     
{....} 


uses Richedit, ShellApi; 

{Today I want to show how to implement URL highlighting and URL navigation 
without any third-party components. This functionality is implemented in 
RichEdit from Microsoft (and MS Outlook use this feature, for example) and 
only Borland's developers didn't publish it for us.} 

procedure TForm1.FormCreate(Sender: TObject); 
var 
  mask: Word; 
begin 
  mask := SendMessage(RichEdit1.Handle, EM_GETEVENTMASK, 0, 0); 
  SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); 
  SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0); 

  //Some text in RichEdit 
  RichEdit1.Text := 'Scalabium Software'#13#10 + 
    ' Site is located at www.scalabium.com. Welcome to our site.'; 
end; 

procedure TForm1.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(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); 
        strURL := RichEdit1.SelText; 
        ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL); 
      end 
    end 
  end; 
  inherited; 
end; 


2Radon, тут я думаю сам разберешся. Ну если не разберешся то обращайся

Автор: Samhein 21.10.2005, 21:19
Ну вообщем более правильно будет так:
Код

{....} 
  protected 
    procedure WndProc(var Message: TMessage); override; 
     
{....} 
uses Richedit, ShellApi; 
{Today I want to show how to implement URL highlighting and URL navigation 
without any third-party components. This functionality is implemented in 
RichEdit from Microsoft (and MS Outlook use this feature, for example) and 
only Borland's developers didn't publish it for us.} 

procedure TForm1.RichEdit1Change(Sender: TObject);
var 
  mask: Word; 
begin 
  mask := SendMessage(RichEdit1.Handle, EM_GETEVENTMASK, 0, 0); 
  SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); 
  SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0); 
end; 
procedure TForm1.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(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); 
        strURL := RichEdit1.SelText; 
        ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL); 
      end 
    end 
  end; 
  inherited; 
end; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)