Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichEdit гиперссылки, Не получается добавить новый функционал 
:(
    Опции темы
Proxin
Дата 3.11.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

Репутация: 1
Всего: 3



Проблема в следущем: пишу свой компонент (точнее, свожу его из имеющихся, плюс, по мелочи, своё - за основу взят старенький re_lne, вполне себе рабочий).
Не получается добавить автоматическое определение ссылок.
Пишу следующий код в разделе CreateWnd:
Код

procedure TRichEdit20A.CreateWnd;
begin
inherited;
SendMessage (handle, EM_SETEVENTMASK, 0,sendmessage(handle, EM_GETEVENTMASK, 0,0) or ENM_LINK);
if FLinkIsAutodetect then
SendMessage(Handle, EM_AUTOURLDETECT, Integer(True), 0); //проблема тут. не получается добавить автоопределение, хотя сообщение, вроде, это.
end;

В чём может быть ошибка?
UPD. FLinkIsAutodetected объявлено в секции private, устанавливается published-свойством AutodetectLinks: Boolean read FLinkIsAutodetect write FLinkIsAutodetect в runtime, когда на форму компонент кидаешь.

Это сообщение отредактировал(а) Proxin - 3.11.2009, 12:21
PM MAIL   Вверх
Proxin
Дата 3.11.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

Репутация: 1
Всего: 3



Проблема, кажется в свойстве FLinkIsAutodetect. Как вызавать событие добавления/удаления поддержки автодетекта при смене этого свойства?
PM MAIL   Вверх
Rrader
  Дата 4.11.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Рабочий пример:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, CommCtrl, RichEdit;

type
  TRichEdit = class(ComCtrls.TRichEdit)
  private
    FLinkIsAutodetect: Boolean;
    procedure SetLinkIsAutodetect(Value: Boolean);
  protected
    procedure CreateWnd; override;
  public
    constructor Create(Aowner: TComponent); override;  
  published
    property LinkIsAutodetect: Boolean read FLinkIsAutodetect write
      SetLinkIsAutodetect default False;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    RichEdit1: TRichEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TRichEdit }

constructor TRichEdit.Create(Aowner: TComponent);
begin
  inherited Create(AOwner);
  FLinkIsAutodetect := False;
end;

procedure TRichEdit.CreateWnd;
begin
  inherited;
  SendMessage(Handle, EM_SETEVENTMASK, 0,
    SendMessage(Handle, EM_GETEVENTMASK, 0, 0) or ENM_LINK);
end;

procedure TRichEdit.SetLinkIsAutodetect(Value: Boolean);
begin
  if FLinkIsAutodetect <> Value then
    if SendMessage(Handle, EM_AUTOURLDETECT, WPARAM(Value), 0) = 0 then
      FLinkIsAutodetect := Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.LinkIsAutodetect := True;
end;

end.



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Proxin
Дата 4.11.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

Репутация: 1
Всего: 3



Спасибо.
Только проблема - при выставлении AutodetectLinks в true и вводе текста в мой richedit в среде проектирования, после запуска url не выделяется. Пытался в CreateWnd делать repaint - не помогло. Как сделать, чтобы при запуске приложения в тексте, который лежит в моём ричедите уже были выделены ссылки?

Это сообщение отредактировал(а) Proxin - 4.11.2009, 15:05
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.