Przewijanie w Memo

0

w tym temacie znalazłem:

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

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ż:

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

Będe wdzięczny za jakiekolwiek wskazówki

0

Można również tak

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:

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

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);
  

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