DruckenMister WongFacebook

In einem Memo-Feld navigieren

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

Dieser Artikel zeigt, wie Sie in einem Memo-Feld vertikal und horizontal scrollen können. Dazu muss die Botschaft WM_VSCROLL zum vertikalen und WM_HSCROLL zum horizontalen Scrollen an das Handle des Memo-Feldes gesendet werden. Dabei gibt der erste Parameter die Art des Scrollen an:


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Perform(WM_VSCROLL, SB_TOP, 0);
end;
 

In diesem Beispiel wird das Memo-Feld komplett nach oben gescrollt. Außer SB_TOP sind noh folgende Werte möglich:

  • SB_BOTTOM - Ans Ende scrollen
  • SB_LINEUP - Eine Zeile nach oben scrollen
  • SB_LINEDOWN - Eine Zeile nach unten scrollen
  • SB_PAGEUP - Eine Seite nach oben scrollen (Bild hoch)
  • SB_PAGEDOWN - Eine Seite nach unten scrollen (Bild runter)

Bewegungen innerhalb einer Zeile sind mit WM_HSCROLL möglich. Die Parameter für Scroll-Art sind dabei die gleichen.Um direkt zu einer "Koordinate" in einem Memo-Feld zu springen, nutzen Sie die Botschaft EM_SCROLLCARET, um zu einer Cursorposition zu springen.Folgende Prozedur erwartet als ersten Parameter das entsprechende Memo-Feld, wobei es sich auch um ein TRichEdit handeln kann. Bei dem Parameter X handelt es sich um die Zeilenangabe (beginnend bei 0), bei Y um die Position innerhalb einer Zeile.


procedure SetCursorInMemo(const AMemo: TCustomMemo; X, Y: Integer);
begin
  AMemo.SelStart:=AMemo.Perform(EM_LineIndex,X,0)+Y;
  AMemo.Perform(EM_SCROLLCARET, 0, 0);
  AMemo.SetFocus;
end;
 

Die Prozedur setzt zunächst den Cursor an die gewünschte Stelle und scrollt diesen dann in den sichtbaren Bereich.