Тема: Builder C++, Scroll в RichEdit
Я хочу змінити програмно позицію лінії прокрутки (Scroll vertical) в RichEdit я знайшов MSDN функцію SetScrollPos
SetScrollPos(RichEdit1->Handle,SB_VERT,1000,true);
вона змінює позицію лінії прокрутки але проблема в тому що змінюється лише позиція лінії прокрутки а сам текст як був на початку так там і залишився, в описі функції пише New applications should use the SetScrollInfo function. тому я спробував SetScrollInfo
tagSCROLLINFO *scroll = new tagSCROLLINFO;//створюємо tagSCROLLINFO
GetScrollInfo(RichEdit1->Handle,SB_VERT,scroll);//щоб не заповнювати беремо вже існуючі значення
scroll->nPos+=1000;//пробуємо прибавити до позиції
SetScrollInfo(RichEdit1->Handle,SB_VERT,scroll,true);//застосовуємо нові значення
/*для перевірки виведемо в RichEdit3*/
RichEdit3->Text =
"nMin = " + IntToStr(scroll->nMin)+
" | nMax = " + IntToStr(scroll->nMax)+
" | nPos = " + IntToStr(scroll->nPos)+
" | nTrackPos = " + IntToStr(scroll->nTrackPos);
тоді взагалі нічого не відбувається а RichEdit3(який я створив для перевірки введених результатів) пише якісь незрозумілі цифри, наприклад коли видалити scroll->nPos+=1000; а полоса прокрутки на початку то
nMin = 3 | nMax = 7864436 | nPos = 0 | nTrackPos = 0
ніби все логічно nPos =0 але коли в кінці
nMin = 1342516736 | nMax = 35316272 | nPos = 1343691392 | nTrackPos = 0
добре повертаємо полосу на початок
nMin = 7 | nMax = 3538995 | nPos = 3604528 | nTrackPos = 49
замість того щоб nPos = 0 воно дорівнює nPos = 3604528 це якесь сміття
є ще в RichEdit SelStart але це не те що мені потрібно SelStart відповідає за курсор тексту, я намагався знайти builderські функції для скрола але так і не найшов, як вирішити цю проблемо з скролом ?