Przewijanie w Memo

PI
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 13 lat
0

w tym temacie znalazłem:

http://4programmers.net/Delphi/FAQ/Jak_przewija%C4%87_zawarto%C5%9B%C4%87_Memo_poprzez_naciskanie_przycisku

Kopiuj
Jak przewijać zawartość Memo poprzez naciskanie przycisku?
Musisz w tym celu skorzystać z komunikatów i wysłać komunikat do komponentu. Więcej o komunikatach możesz poczytać w rozdziale 5. książki Delphi 7. Kompendium programisty

Memo1.Perform(WM_VSCROLL,SB_LINEDOWN,0); // jenda linia w dol
Memo1.Perform(WM_VSCROLL,SB_LINEUP,0); // jedna linia w gore 

ale jeśli mam przewinąć do 1280-tej lini to <ort>na pewno </ort>jest jakiś bardziej profesjonalny sposób niż:

Kopiuj
for x:=0 to 1280 do
Memo1.Perform(WM_VSCROLL,SB_LINEDOWN,0);

Będe wdzięczny za jakiekolwiek wskazówki


<img src="http://www.easyshare1.yoyo.pl/files/a3968e.png" alt="user image" />
SI
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0

Można również tak

Kopiuj
Memo1.Perform(WM_VSCROLL, SB_PAGEDOWN, 0);   // jedna strona w dół
Memo1.Perform(WM_VSCROLL, SB_PAGEUP, 0);     // jedna strona w górę
Memo1.Perform(WM_VSCROLL, SB_BOTTOM, 0);     // na koniec tekstu
Memo1.Perform(WM_VSCROLL, SB_TOP, 0);        // na początek tekstu

albo można wysłać do kontrolki komunikat EM_LINESCROLL

wParam = (WPARAM) cxScroll; // characters to scroll horizontally
lParam = (LPARAM) cyScroll; // lines to scroll vertically

Przykłady:

Kopiuj
SendMessage(Memo1.Handle, EM_LINESCROLL, 0, 1280);    // 1280 linii w dół
SendMessage(Memo1.Handle, EM_LINESCROLL, 0, -1280);   // 1280 linii w górę
SendMessage(Memo1.Handle, EM_LINESCROLL, 100, 0);     // 100 znaków w prawo
SendMessage(Memo1.Handle, EM_LINESCROLL, -100, 0);    // 100 znaków w lewo

Aby przewinąć zawartość kontrolki Memo do linii nr 1280 wpisz

Kopiuj
SendMessage(Memo1.Handle, WM_VSCROLL, SB_TOP, 0);   // najpierw na górę
SendMessage(Memo1.Handle, EM_LINESCROLL, 0, 1279); 

// albo przy użyciu metody Perform, która daje taki sam rezultat
Memo1.Perform(WM_VSCROLL, SB_TOP, 0);
Memo1.Perform(EM_LINESCROLL, 0, 1279);
  

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.