Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Подсветить ссылки в TRichEdit

Delphi , Компоненты и Классы , TMemo и TRichEdit

Подсветить ссылки в TRichEdit

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  So what we need: 
  1. drop on your form a RichEdit component from win32 page of component 
  palette 
  2. in OnCreate event of your form write the next code: 
}

 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;

 { 
  After that your Richedit will convert automatically any URLs in highlighted 
  (blue color and underlined). Even if you'll start to enter any text directly 
  in Richedit, any begings for URL will be converted too (not only existing 
  text string but new too) 
}

 // 3. now we must detect mouse clicks in URL range. For this task we must 
//    override WndProc method of our form: 
type
   TForm1 = class(TForm)
   protected
     procedure WndProc(var Message: TMessage); override;
   end;

 // 4. the implementation looks like this: 

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;

 { 
 5. Now you can compile your project (don't forget to include Richedit and 
 ShellAPI units in uses clause). 
}

Программный код - решение для выделения URL в контроле TRichEdit в Delphi. Вот разбивка кода:

Шаг 1: Добавьте компонент TRichEdit Добавьте компонент TRichEdit из страницы Win32 Палеты компонентов на вашу форму.

Шаг 2: Настройте обнаружение и выделение URL В обработчике события FormCreate настройте RichEdit для обнаружения URL и выделения их. Это делается следующим образом: 1. Получите текущий маску событий с помощью EM_ GETEVENTMASK. 2. Установите маску событий, включая ENM_LINK, с помощью EM_SETEVENTMASK. 3. Включите автоматическое обнаружение URL с помощью EM_AUTOURLDETECT. 4. Установите свойство текста RichEdit.

Шаг 3: Переопределите WndProc Чтобы обнаружить клики мыши на выделенных URL, вам нужно переопределить метод WndProc вашей формы.

Шаг 4: Реализуйте WndProc В переопределенном методе WndProc: 1. Проверьте, является ли сообщение уведомлением (WM_NOTIFY) и связанным с URL-линком (EN_LINK). 2. Если это так, получите структуру TENLink из уведомления. 3. Проверьте, был ли нажат кнопка мыши (используя p.Msg = WM_LBUTTONDOWN). 4. Если да, выберите текст выделенного URL с помощью EM_EXSETSEL. 5. Получите выбранный текст в виде строки и передайте его ShellExecute для открытия URL.

Шаг 5: Скомпилируйте проект Не забудьте включить units RichEdit и ShellAPI в вашем использовании. Once вы настроили эти шаги, вы должны быть able compile and run your project with URL highlighting and clicking functionality. Вот резюме кода:

  • Шаги 1-2: Настройте RichEdit для автоматического обнаружения и выделения URL.
  • Шаг 3: Переопределите метод WndProc для обнаружения кликов мыши на выделенных URL.
  • Шаг 4: Реализуйте метод WndProc для обработки кликов URL.
  • Шаг 5: Скомпилируйте проект. Это полезное решение для создания URL-осведомленного RichEdit в Delphi.

В статье описывается как подсветить ссылки в TRichEdit, используя Delphi: добавление RichEdit компонента на форму, настройка события FormCreate, override метод WndProc и использование функций EM_SETEVENTMASK, EM_AUTOURLDETECT, EM_EXSETSEL и ShellExecute.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMemo и TRichEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:18:02/0.0037040710449219/0