Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Синхронная прокрутка двух TMemo   Найти похожие ветки 

 
Ezorcist   (2007-09-16 17:58) [0]

Возможно ли?
имеется два поля TMemo с одинаковым количество строк, как сделать, что "протаскивании" одного ползунка прокрутки - так же перемещался и другой?


 
sniknik ©   (2007-09-16 18:29) [1]

например
type
 TMyMemo = class(TMemo)
   procedure WMVScroll(var Mess: TMessage); message WM_VSCROLL;
 end;

 TMemo = class(TMyMemo);

 TForm1 = class(TForm)
   Memo1: TMemo;
   Memo2: TMemo;
 ....

procedure TMyMemo.WMVScroll(var Mess: TMessage);
begin
 if Tag <> 0 then
   PostMessage(Tag, WM_VSCROLL, Mess.WParam, Mess.LParam);
 inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Tag:= Memo2.Handle;
end;


 
{RASkov} ©   (2007-09-16 19:56) [2]

> Memo1.Tag:= Memo2.Handle;

Имхо... лучше не Хэндл запоминать, а сам объект.... так:
Memo1.Tag:= Integer(Memo2);
Так как, такая безобидная строка -
Memo2.Alignment:=taRightJustify;
и в Tag"е Memo1 мы имеем "битый" хэндл....


 
Ezorcist   (2007-09-18 19:52) [3]

2 sniknik

Спасибо) А что если скроллим колесом мышки? Если тащу за ползунок все ок, а если скролом мыши, то WM_VSCROLL судя по всему нет


 
sniknik ©   (2007-09-18 21:49) [4]

> то WM_VSCROLL судя по всему нет
есть (точку останова в нем поставь увидишь), только чегото ему не хватает чтобы синхронизироваться (может перед ним надо чего посылать, или завершать...) ищи в общем то что нужно передавать чтобы сработало

или передавай все события типа

 TMyMemo = class(TMemo)
   procedure WndProc(var Mess: TMessage); override;
 end;

procedure TMyMemo.WndProc(var Mess: TMessage);
begin
 if Tag <> 0 then //в Tag-е обьект по совету {RASkov} ©   (16.09.07 19:56) [2]
   with Mess do
     PostMessage(TMemo(Tag).Handle, Msg, WParam, LParam);

 inherited;
end;


только так будут свои "прибабахи", так к примеру событие смены фокуса передавать явно лишнее...  можеш кстати не искать, что нужно, а от всего "отсекать" лишнее. в конце концов добьешся того что тебя удовлетворит.


 
Ezorcist   (2007-09-18 22:59) [5]

Уф...  не знаю что это, но мне нужно было сообщение 522

sniknik  Спасибо!


 
sniknik ©   (2007-09-18 23:42) [6]

> не знаю что это
WM_MOUSEWHEEL       = $020A;
скролл колесом мыши... которого говорил нет...



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
2-1190358163
Леван Варшанидзе
2007-09-21 11:02
2007.10.14
Как узнать IP аддресс текущего интернет-подключения?


2-1190130186
Евгений Р.
2007-09-18 19:43
2007.10.14
Заштриховать область


15-1190095040
de.
2007-09-18 09:57
2007.10.14
Среды разработки под FreeBSD


2-1190398346
vadimi4
2007-09-21 22:12
2007.10.14
ADO и SQL Server 2000


4-1176206198
Ega23
2007-04-10 15:56
2007.10.14
Как воспроизвести видеозапись в конкретном окне?