Przewijanie linii w Memo i Richedit

Przewijanie linii w Memo i Richedit
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
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)

Kopiuj
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!

edytowany 4x, ostatnio: axel234
crowa
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • Lokalizacja:Poznań
  • Postów:295
0

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


Tomasz Andrzejewski
Delphi (XE3-XE7) framework engineer @ InterLan
MCP: Microsoft SQL Server 2008, Implementation and Maintenance
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
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)

Kopiuj
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ć.

edytowany 1x, ostatnio: axel234
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.

axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
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.

edytowany 1x, ostatnio: axel234

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.