Станционный диспетчер
Группа: Участник
Сообщений: 120
|
Как организовать скролинг в случае когда имеется два Мемо первое отображает порядковый номер строки текста, а второе Мемо отображает сам текст как это реализовано в некоторых HTML редакторах?
Вид в аттаче.
Т.к. проблема в чем? Когда я смещаюсь по тексту во втором Мемо вниз или вверх в первом Мемо ничего не происходит...
Пробовал делать так:
CODE |
void __fastcall TForm1::NewWindowProcLB1(Messages::TMessage &Message)
{
OldWindowProcLB1(Message);
if(Message.Msg==WM_VSCROLL || Message.Msg==WM_MOUSEWHEEL)
Memo1->Top=Memo2->Top;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewWindowProcLB2(Messages::TMessage &Message)
{
OldWindowProcLB2(Message);
if(Message.Msg==WM_VSCROLL || Message.Msg==WM_MOUSEWHEEL)
Memo2->Top=Memo1->Top;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWindowProcLB1=Memo2->WindowProc;
Memo2->WindowProc=NewWindowProcLB1;
OldWindowProcLB2=Memo1->WindowProc;
Memo1->WindowProc=NewWindowProcLB2;
|
Так же пробовал делать так:
CODE |
void __fastcall TForm1::Memo2KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
SendMessage(Memo1->Handle, WM_VSCROLL, MAKEWORD(SB_LINEUP, 0), 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
SendMessage(Memo1->Handle, WM_VSCROLL, MAKEWORD(SB_LINEDOWN, 0), 0);
}
|
После этого при нажатии клавиш вниз когда курсор находится во втором Мемо стекстом в первом идет какое-то подергивание... если непрерывно держать клавишу вниз тогда в первом Мемо осуществляется переход в конец списка номеров строк...
Пожскажите, что можно предпринять или может быть у кого-нить есть кракнутый компонент TAdvMemo фирмы TMS Software который позволяет осуществить то что мне нужно.
Заранее спасибо за ответы.
Присоединить изображение
|