Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RichEdit - Suchfunktion erweitern? (https://www.delphipraxis.net/128671-richedit-suchfunktion-erweitern.html)

BullsEye 3. Feb 2009 21:22


RichEdit - Suchfunktion erweitern?
 
Hallo liebe DP'ler

Also, ich habe benutzte folgenden Code um ein Richedit zu durchsuchen.

Delphi-Quellcode:
procedure TfrmEditor.btnSucheClick(Sender: TObject);
var a:integer;
    Suchwort:TStringList;
    StartPos, Position, Endpos: Integer;
begin
  Suchwort := TStringList.Create;
  Suchwort.Text := edtSuche.Text;
  StartPos := 0;
  Position := 0;
  for a:=0 to Suchwort.Count-1 do begin
    with mConfig do
    begin
      Endpos := Length(mConfig.Text);
    if Endpos<>(-1) then
      Position := FindText(Suchwort.Strings[a], StartPos, Endpos, []);
      StartPos := Position + Length(Suchwort.Strings[a]);
      SetFocus;
      SelStart := Position;
      SelLength := Length(Suchwort.Strings[a]);
     // SelAttributes.Color:=clred;
    end;
  end;
  Suchwort.Free;
end;
an sich auch ganz gut.
Ich habe es wie folgt gemacht: Ein Editfeld (dort wird das Suchwort eingegeben) und dann einen Button (startet die Suche)

ABER! In dem Richedit steht nun folgender Text:


Zitat:

bind "0" "slot10"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
geb ich nun in das Editfeld "slot" ein und klicke dann auf den Button, dann wird das erste "slot" von "slot10" makiert. So soll das ja eigentlich auch. Da ich aber viele Worte doppelt habe, möchte ich natürlich auch, das die Anderen auch gefunden werden!
Allerdings wird nur das erste Suchwort im Richedit makiert.
Ich möchte aber, das ich wenn ich ein zweites mal auf den Button klicke, das nächste "slot" , in diesem Fall das von "slot1" makiert wird und so weiter.

Welches ist die beste möglichkeit bzw was muss am Code geändert werden?

taaktaak 4. Feb 2009 06:59

Re: RichEdit - Suchfunktion erweitern?
 
Moin, Moin.
Du musst der Prozedur eine zweite, innere Schleife spendieren, die erst abgebrochen wird, wenn FindText() nichts mehr findet....

BullsEye 4. Feb 2009 13:30

Re: RichEdit - Suchfunktion erweitern?
 
Wie genau meinste das?
Bzw wie kann ich das am besten umsetzten? Ich versteh das leider nicht so ganz

Blackheart 4. Feb 2009 14:05

Re: RichEdit - Suchfunktion erweitern?
 
Ich hab mal die Suche bemüht und das für dich gefunden.Suchbegriff (Weitersuchen)
Siehe Beitrag 7

BullsEye 4. Feb 2009 14:44

Re: RichEdit - Suchfunktion erweitern?
 
Danke, das ist aber für ein Memo und ich habe ein Richedit.

Blackheart 4. Feb 2009 14:49

Re: RichEdit - Suchfunktion erweitern?
 
Zitat:

Zitat von BullsEye
Danke, das ist aber für ein Memo und ich habe ein Richedit.

Das ist egal einfach umschreiben TRichEdit

taaktaak 4. Feb 2009 15:14

Re: RichEdit - Suchfunktion erweitern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, Moin.
Wenn du noch ein paar mehr Suchoptionen haben möchtest und nicht nur an einer fertigen, schnellen Lösung interessiert bist, dann schau dir mal den Anhang an. Er enthält eine recht alte "Programmierstudie" als Vorlauf zu einer Such-/Ersetzen-Komponente für das RichEdit.

BullsEye 4. Feb 2009 15:40

Re: RichEdit - Suchfunktion erweitern?
 
Hallo,

viele Dank für den Code, ich werde es mir mal anschauen. Das ist weiteraus komplizierter, als ich es mir eig vorgestellt habe.
Nunja, nen halbes Jahr nicht mehr richtige programmiert und man ist schon raus. Dabei dachte ich programmieren ist wie Fahrrad fahren, das verlernt man nie

taaktaak 4. Feb 2009 15:43

Re: RichEdit - Suchfunktion erweitern?
 
Gern geschehen!
Wie gesagt, es ist nur eine "Studie", da kann/muss noch eifrig "gefeilt" werden!


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