Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - weitersuchen im FindDialog funktioniert nicht
colaka - Sa 15.01.11 08:50
Titel: weitersuchen im FindDialog funktioniert nicht
Hallo,
ich möchte in meinem Richedit einen Text finden, den ich im Finddialog eingegeben habe. Das mache ich mit dem folgenden Code:
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 if SelLength <> 0 then StartPos := SelStart + SelLength else StartPos := 0;
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 - 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?
colaka - 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 - Sa 15.01.11 09:40
colaka hat folgendes geschrieben : |
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!