Содержание материала

Данный способ позволяет не погружаясь глубоко в создание компонент осуществить операцию "drag and drop" выделенного текста.

 

Создайте новый компонент (TMyMemo), наследовав его от TMemo. И объявите его следующим образом:

 

Code:

type

TMyMemo = class(TMemo)

private

   FLastSelStart : Integer;

   FLastSelLength : Integer;

   procedure WMLButtonDown(var message: TWMLButtonDown); message WM_LBUTTONDOWN;

published

   property LastSelStart : Integer read FLastSelStart write FLastSelStart;

   property LastSelLength : Integer read FLastSelLength write FLastSelLength;

end;

 

Добавьте обработчик WMLButtonDown:

 

Code:

procedure TMyMemo.WMLButtonDown(var message: TWMLButtonDown);

var

Ch: Integer;

begin

if SelLength > 0 then

begin

   Ch := LoWord(Perform(EM_CHARFROMPOS, 0,

   MakeLParam(message.XPos, message.YPos)));

   LastSelStart := SelStart;

   LastSelLength := SelLength;

   if (Ch >= SelStart) and (Ch <= SelStart+SelLength-1) then

     BeginDrag(True)

   else

     inherited;

end

else

   inherited;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить