AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In TMemo zu bestimmter Line Scrollen?

Ein Thema von schwa226 · begonnen am 20. Dez 2010 · letzter Beitrag vom 20. Dez 2010
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

In TMemo zu bestimmter Line Scrollen?

  Alt 20. Dez 2010, 10:25
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?

Log_Memo.Perform(EM_LINESCROLL, 0, ActualLine); Geht auf jeden Fall nicht

Am besten möchte ich wenn möglich diese Line dann auch noch farblich hervorheben!
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: In TMemo zu bestimmter Line Scrollen?

  Alt 20. Dez 2010, 10:42
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:
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;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (20. Dez 2010 um 10:48 Uhr)
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#3

AW: In TMemo zu bestimmter Line Scrollen?

  Alt 20. Dez 2010, 11:03
Danke für deine Hilfe!

Habe nun etwas zusammengebastelt:

Delphi-Quellcode:
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;
ActualLine und Position sind global definiert.
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.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: In TMemo zu bestimmter Line Scrollen?

  Alt 20. Dez 2010, 11:06
Achso, da hatte ich "farblich hervorheben" falsch interpretiert, mit Markieren ist das etwas einfacher. Naja, Hauptsache, es funktioniert jetzt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#5

AW: In TMemo zu bestimmter Line Scrollen?

  Alt 20. Dez 2010, 11:38
Ja, danke!

Markieren reicht völlig aus. Durch das Markieren wird auch Automatisch auf die Position gescrolled.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz