C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как проскролировать Мемо програмно?
creater
  Отправлено: 17.12.2004, 15:57


Станционный диспетчер

Группа: Участник
Сообщений: 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 который позволяет осуществить то что мне нужно.

Заранее спасибо за ответы.

Присоединить изображение

Присоединить изображение

Guest
Отправлено: 17.12.2004, 16:19


Не зарегистрирован







Подобное было тут одновременная прокрутка текста

Вернуться в Вопросы программирования в C++Builder