Przewijanie linii w Memo i Richedit

0

Potrzebuję waszej pomocy w kwestii scrollbar'u a mianowicie pierwsze pytanie brzmi:

Dlaczego taka procedura (patrz niżej) przewija mi poprawnie elementy w Memo a w Richedit w ogóle nie przewija? (Memo i Richedit są obok siebie, mają takie same rozmiary i tyle samo linii)

scrollbar1.max := memo2.lines.Count - (memo2.Height div 16); 
sendmessage(memo2.handle, WM_VScroll, MakeLParam(SB_THUMBPOSITION, ScrollBar1.Position), 0);

scrollbar1.max := richedit1.lines.Count - (richedit1.Height div 16); 
sendmessage(richedit1.handle, WM_VScroll, MakeLParam(SB_THUMBPOSITION, ScrollBar1.Position), 0);

Drugie pytanie:
Chciałbym żeby suwak scrollbar'u był proporcjonalnie długi do ilości linii Memo, tzn żeby w momencie przewinięcia linii w Memo do końca suwak znajdował się na samym dole a nie tak jak w tej chwili mimo, że wszystkie linie Memo są przewinięte do końca, a suwak jest dopiero po środku scroll'a - męczę się nad tym i jeśli okaże się to jakąś łatwizną to się postrzelę heh

Help!

0

a zmieniasz parenta dla scrolbara? moze ustwa parenta (a tak poza tym to musisz to eventami obslugiwac?)

0

Aktualne jest już tylko to pytanie:

Dlaczego taka procedura (patrz niżej) przewija mi poprawnie elementy w Memo, a w Richedit w ogóle nie przewija? (Memo i Richedit są obok siebie, mają takie same rozmiary i tyle samo linii)

scrollbar1.max := memo2.lines.Count - (memo2.Height div 16); 
sendmessage(memo2.handle, WM_VScroll, MakeLParam(SB_THUMBPOSITION, ScrollBar1.Position), 0);

scrollbar1.max := richedit1.lines.Count - (richedit1.Height div 16); 
sendmessage(richedit1.handle, WM_VScroll, MakeLParam(SB_THUMBPOSITION, ScrollBar1.Position), 0);

Nie mogę sobie z tym poradzić.

0

Bo wlasnie w RichEdicie nie dziala, to zupelnie inne kontrolki. Jest rozwiazanie do Twojego problemu na expert exchange: http://64.233.183.104/search?q=cache:LzBS9uIv6GwJ:www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_10108083.html+trichedit+WM_VScroll&hl=pl&ct=clnk&cd=7&gl=pl

Powinienes pod koniec znaleŹĆ cos co mogloby pomoc.

0

Ok. Trochę poszperałem w sieci i znalazłem rozwiązanie. Oto ono:

richedit1.perform(EM_SCROLL,SB_LINEUP,1); - przewija linie richedita w górę
richedit1.perform(EM_SCROLL,SB_LINEDOWN,1); - w dół

Dzięki za podpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1