Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 15.01.11 08:50 
Hallo,

ich möchte in meinem Richedit einen Text finden, den ich im Finddialog eingegeben habe. Das mache ich mit dem folgenden Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TFDok.FindDialogFind(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit do
  begin
    { Suchbeginn nach der aktuellen Markierung (falls vorhanden), }
    { andernfalls am Textanfang starten }
    if SelLength <> 0 then
      StartPos := SelStart + SelLength
    else
      StartPos := 0;

    { ToEnd ist die Länge von StartPos bis zum Ende des Textes im RTF-Eingabefeld }
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(FindDialog.FindText, StartPos, ToEnd, [stMatchCase]);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog.FindText);
    end;
  end;
end;


Das erste gesuchte Wort wird auch gefunden und markiert, aber wenn ich auf "Weitersuchen" klicke, wird nichts mehr gefunden.

Ich kann den Fehler leider nicht finden.

Danke Ebi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 15.01.11 09:30 
Du ignorierst die Optionen des Dialogs und reagierst nicht darauf, wenn es der letzte Fund ist, aber in eine Richtung (nach unten) sollte es so klappen. Hast du vielleicht HideSelection beim RichEdit noch auf True und siehst die Markierung nur nicht?

Für diesen Beitrag haben gedankt: colaka
colaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Sa 15.01.11 09:35 
Hallo,

HideSelection stand wirklich auf true. Aber dann verstehe ich nicht, warum das erste gefundene Wort angezeigt wurde.

Naja, wie dem auch sei. Es funktioniert, und dafür sage ich danke.

Gruß Ebi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 15.01.11 09:40 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
HideSelection stand wirklich auf true. Aber dann verstehe ich nicht, warum das erste gefundene Wort angezeigt wurde.
Wahrscheinlich, weil dabei der Fokus auch zurück auf das RichEdit gesetzt wurde. ;-)
In deinem Code wird SetFocus aber nicht mehr aufgerufen, wenn schon der letzte Fund erreicht ist.