![]() |
In TMemo zu bestimmter Line Scrollen?
Hallo!
Wie der Titel schon sagt, möchte ich bei einer TMemo zu einer bestimmten Zeile scrollen. Ich durchsuche die Lines nach einem Text und will dann dort hin scrollen. Geht das irgendwie?
Delphi-Quellcode:
Geht auf jeden Fall nicht :(
Log_Memo.Perform(EM_LINESCROLL, 0, ActualLine);
Am besten möchte ich wenn möglich diese Line dann auch noch farblich hervorheben! |
AW: In TMemo zu bestimmter Line Scrollen?
Solange die anzuscrollende Zeile hinter der aktuellen Caretposition liegt, geht das bei mir in einem kleinen Testprojekt sehr wohl.
[edit] So klappt es anscheinend:
Delphi-Quellcode:
[/edit]
procedure TFormTest.Button1Click(Sender: TObject);
const TEXTTOSEARCH = 'Suchtext'; var WantedLine, StringPos, CurrentPos: integer; begin //aktuelle Cursorposition merken CurrentPos := Memo1.SelStart; //Cursor auf Textanfang Memo1.SelStart := 0; //Zeile des Suchtextes ermitteln StringPos := Pos(TEXTTOSEARCH,Memo1.Text) - 1; WantedLine := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,StringPos,0); //jetzt dorthin scrollen SendMessage(Memo1.Handle,EM_LINESCROLL,0,WantedLine); //und Cursor wieder zurücksetzen Memo1.SelStart := CurrentPos; end; |
AW: In TMemo zu bestimmter Line Scrollen?
Danke für deine Hilfe!
Habe nun etwas zusammengebastelt:
Delphi-Quellcode:
ActualLine und Position sind global definiert.
procedure TfrmMain.btSearchClick(Sender: TObject);
var i : integer; Found : Boolean; begin Found := False; for i := ActualLine to Log_Memo.Lines.Count - 1 do begin if AnsiPos(Uppercase(edSearch.Text), Uppercase(Log_Memo.Lines[i])) <> 0 then begin Found := True; ActualLine := i + 1; Log_Memo.SelStart := Position; Log_Memo.SelLength := Length(Log_Memo.Lines[i]); Log_Memo.SetFocus; end; Position := Position + Length(Log_Memo.Lines[i]) + Length(#13#10); if Found then Break; end; if not Found then begin ActualLine := 0; Position := 0; ShowMessage('Finished search!'); end; end; Geht ganz gut, und es wird auch gleich der Text markiert. die Suchfunktion sucht immer nach dem nächsten Text und fängt wieder von vorne an wenn das Memo aus ist. |
AW: In TMemo zu bestimmter Line Scrollen?
Achso, da hatte ich "farblich hervorheben" falsch interpretiert, mit Markieren ist das etwas einfacher. Naja, Hauptsache, es funktioniert jetzt :)
|
AW: In TMemo zu bestimmter Line Scrollen?
Ja, danke!
Markieren reicht völlig aus. Durch das Markieren wird auch Automatisch auf die Position gescrolled. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz