Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RichEdit + ссылка [D6, WinXP]


webpauk ©   (2005-08-11 13:09:00) 

как в RichEdite выделить ссылку?


sniknik   (2005-08-11 14:54:00) [1]

> Только RichEdit перестает реагировать на OnChange!
> Что делать?
у меня реагирут, код практически тот же...

 mask:= SendMessage(DBRichEditTheori.Handle, EM_GETEVENTMASK, 0, 0);
 SendMessage(DBRichEditTheori.Handle, EM_SETEVENTMASK, 0, mask or EN_LINK);
 SendMessage(DBRichEditTheori.Handle, EM_AUTOURLDETECT, Integer(True), 0);

только DBRichEdit и EN_LINK вместо ENM_LINK при задании, и хендл берется не формы а компанента для чтения маски... ;о))


Eraser   (2005-08-11 14:08:00) [2]

webpauk   (11.08.05 13:48) [3]

Только RichEdit перестает реагировать на OnChange!
Что делать?


Использовать TRxRichEdit из RxLib или TJvRichEdit из JEDI VCL.


Kazakh   (2005-08-11 13:59:00) [3]

У меня на это мозгов не хватает.Sorry


webpauk   (2005-08-11 13:48:00) [4]

Только RichEdit перестает реагировать на OnChange!
Что делать?


webpauk   (2005-08-11 13:23:00) [5]


> Kazakh   (11.08.05 13:16) [1]


Дякс


Kazakh   (2005-08-11 13:16:00) [6]

procedure TForm1.FormCreate(Sender: TObject);
var
  mask: Word;
begin
  mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0);
  SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
  SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
  RichEdit1.Text := 'SwissDelphiCenter.com: '#13#10 +
    ' Site is located at www.SwissDelphiCenter.com';
end;

task we must

type
  TForm1 = class(TForm)
  protected
    procedure WndProc(var Message: TMessage); override;
  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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо