Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suchfunktion (https://www.delphipraxis.net/73041-suchfunktion.html)

smart 11. Jul 2006 13:09


Suchfunktion
 
Hallo Alle!

Ich habe mir hier eine Suchfunktion gebaut, welche aus einem TMemo einen bestimmten Text sucht.
Delphi-Quellcode:
procedure TBondruck.Button4Click(Sender: TObject);
Var
  I, J, PosReturn, SkipChars: Integer;
begin
  for I := 0 to Memo2.Lines.Count do
  begin
    PosReturn := Pos(Edit1.Text,Memo2.Lines[I]);
    if PosReturn <> 0 then {gefunden!}
    begin
      Skipchars := 0;
      for J := 0 to I - 1 do
        Skipchars := Skipchars + Length(Memo2.Lines[J]);
      SkipChars := SkipChars + (I*2);
      SkipChars := SkipChars + PosReturn - 1;

      Memo2.SetFocus;
      Memo2.SelStart := SkipChars;
      Memo2.SelLength := Length(Edit1.Text);
      Break;
    end;
  end;
end;
Klappt ganz gut. Wie kann ich nun erreichen, dass der gefundene Text immer in der ersten Linie erscheint?

Gruß
Heike

xaromz 11. Jul 2006 13:18

Re: Suchfunktion
 
Hallo,

kannst Du bitte erläutern, was Du mit "immer in der ersten Linie" meinst? Das würde helfen :wink: .

Gruß
xaromz

himitsu 11. Jul 2006 13:36

Re: Suchfunktion
 
Es soll bestimmt so gescrollt werden, das der markierte Textabschnitt soweit wie möglich im orbern sichtbaren Bereich liegt.

(hab nur keine Ahnung wie man scrollt ... programmseitig) ._.

ste_ett 11. Jul 2006 13:38

Re: Suchfunktion
 
Versuch mal
Delphi-Quellcode:
ScrollBy();
.

Delphi-Quellcode:
for I := 0 to Memo2.Lines.Count do
Da fehlt ein "-1". :)

EDatabaseError 11. Jul 2006 13:39

Re: Suchfunktion
 
IMHO wenn in Zeile X der Text gefunden wird kommt Zeile X im Memo in die Erste Zeile und der Rest rutscht eins runter... ;-)


[rot][nochmal rot :wall: ]

smart 11. Jul 2006 13:51

Re: Suchfunktion
 
Zitat:

Zitat von xaromz
Hallo,

kannst Du bitte erläutern, was Du mit "immer in der ersten Linie" meinst? Das würde helfen :wink: .
xaromz

Es soll im TMemo der gefundene Text nach oben gescrollt werden, so dass er in der ersten Zeile steht.

Gruß
Heike

smart 11. Jul 2006 13:56

Re: Suchfunktion
 
Zitat:

Zitat von ste_ett
Versuch mal
Delphi-Quellcode:
ScrollBy();

Schade, klappt leider nicht!
Zitat:

Zitat von ste_ett
Delphi-Quellcode:
for I := 0 to Memo2.Lines.Count do
Da fehlt ein "-1". :)

Vielen Dank, habe ich vergessen.

Gruß
Heike

tobu 11. Jul 2006 14:00

Re: Suchfunktion
 
Versuch das hier mal:
Delphi-Quellcode:
Memo2.ScrollContent(dirUp)
Edit:
Sorry das bezieht sich auf das von mir benutzte TcxMemo.

himitsu 11. Jul 2006 14:02

Re: Suchfunktion
 
ScrollBy scrollt doch nur Relativ?
Dann müßtest du ja erstmal die Position des Testes rausfinden und die aktuelle Scrollposition und könntest dann per ScrollBy die Diverenz hoch-/runterscrollen.

Aber gibt es nicht zumindestens einen Befehl, welcher den markierten Text in den Sichtbaren Bereich scrollt? (zwar nicht nach ganz oben, aber immerhin kann man den dann sehen ^^)

xaromz 11. Jul 2006 14:09

Re: Suchfunktion
 
Hallo,

zum Bestimmen der momentanen Startzeile ist die Message MSDN-Library durchsuchenEM_GETFIRSTVISIBLELINE geeignet.
Mit MSDN-Library durchsuchenEM_LINESCROLL kannst Du festlegen, wie viele Zeilen gescrollt werden sollen.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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