Памажыте!

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Как вставить в RichEdit смайлики и выделение ссылки, то есть если я напишу https://codeby.net в Edit, чтобы у мя в RichEdit вылетало как ссылка.
 
B

Barmutik

В качестве самого просто варианта могу посоветовать использовать RxLib - TRxRichEdit... ну или Delphi 7 то Jedi и TJvRichEdit

Там есть встроенный механизм подсветки урлов...
 
B

Barmutik

А для обычного можно воспользоваться EM_AUTOURLDETECT

И подсветка УРЛов и не только появится как по мановению волшебной палочки ;)
 
V

Vagor.ini

Лови код на ссылку (работает на www и http)
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ShellApi, Richedit;

type
TForm1 = class(TForm)
 RichEdit1: TRichEdit;
 procedure FormCreate(Sender: TObject);
protected
  procedure WndProc(var Message: TMessage); override;
private
 { Private declarations }
public
 { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

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 := 'Oi ?oi ou i?inee http://htmlreader.by.ru';
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;



end.
А картинку вставь сам, как домашнее задание;)
 
V

Vagor.ini

Barmutik
Прикольно получмлось пока у меня запостило, ты уже ответил...
 
B

Barmutik

Угу ;) ... только видать человек уже не интересуется вопросом.. потому как никакой реакции от него не последовало ...
 
G

Guest

Реакции не было потому что я не мог влезь внет! Большое спасибо за информацию!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!