Данный способ позволяет не погружаясь глубоко в создание компонент осуществить операцию "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; |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!