Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронная прокрутка двух TMemo


Ezorcist ©   (2007-09-16 17:58:00) 

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


sniknik   (2007-09-18 23:42:00) [1]

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


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

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

sniknik  Спасибо!


sniknik   (2007-09-18 21:49:00) [3]

> то 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 19:52:00) [4]

2 sniknik

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


{RASkov}   (2007-09-16 19:56:00) [5]

> Memo1.Tag:= Memo2.Handle;

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


sniknik   (2007-09-16 18:29:00) [6]

например
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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо