RichEdit - scrollbars

0

Witam.

Jak przewinąć na samą górę - na początek zawartość TRichEdit po załadowaniu ?

Help.

0
```delphi with RichEdit1 do begin SetFocus(); SelStart := 0; SelLength := 0; end; ``` Na przyszłość najpierw przeszukaj sieć i wypróbuj kody w niej znalezione (a jest ich masa). ____ Najkrótsza działająca i **przetestowana** przed chwilą wersja:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.Perform(EM_SETSEL, 0, 0); //przesunięcie kursora na początek dokumentu
  RichEdit1.Perform(EM_SCROLL, SB_TOP, 0); //przewinięcie ekranu kontrolki do samej góry
end;

Poprawiam jeszcze raz, bo złego komunikatu użyłem (choć i tak zadziałało);


Dodatkowo możesz także skorzystać z komunikatów WM_VSCROLL oraz WM_HSCROLL także za pomocą metody Perform:

Msg WParam LParam Przesunięcie
WM_VSCROLL SB_TOP 0 do samej góry dokumentu
SB_BOTTOM 0 do samego dołu dokumentu
SB_LINEUP 0 o jedną linię w górę
SB_LINEDOWN 0 o jedną linię w dół
SB_PAGEUP 0 o jeden ekran w górę
SB_PAGEDOWN 0 o jeden ekran w dół
WM_HSCROLL SB_LEFT 0 do lewej krawędzi dokumentu
SB_RIGHT 0 do prawej krawędzi dokumentu
SB_LINELEFT 0 o jedną kolumnę w lewo
SB_LINERIGHT 0 o jedną kolumnę w prawo
SB_PAGELEFT 0 o jeden ekran w lewo
SB_PAGERIGHT 0 o jeden ekran w prawo
i innych; Opisy ich zastosowania są na MSDN.
0

Oto działająca procedura:

Procedure ScrollRichEdit(RichEdit: TRichEdit; ScrollToBottom: Boolean; DeltaLines:Integer); //przewinięcie RichEdit-a o DeltaLines wierszy w dół lub w górę
  Var
  ScrollMessage:TWMVScroll;
  i:Integer;
Begin
  ScrollMessage.Msg:=WM_VScroll;
  For i:=1 to DeltaLines do
  Begin
    If ScrollToBottom then ScrollMessage.ScrollCode:=sb_LineDown //przewinięcie 1 wiersz w dół
                      else ScrollMessage.ScrollCode:=sb_LineUp; //przewinięcie 1 wiersz w górę
    ScrollMessage.Pos:=0;
    RichEdit.Dispatch(ScrollMessage);
  End;
End;

Aby przewinąć do początku RichEdit-a należy wywołać procedurę tak:

ScrollRichEdit(RichEdit1, false, RichEdit1.Lines.Count); 

Aby przewinąć do końca RichEdita należy wywołać procedurę tak:

ScrollRichEdit(RichEdit1, true, RichEdit1.Lines.Count); 

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