![]() |
TReplaceDialog - Wie geht das ???
Hallo!
Ich komme einfach nicht mit dem TReplaceDialog klar :( :( :( . Ich möchte mir Optionen ein Richedit durchsuchen. Wie mache ich das????? |
Re: TReplaceDialog - Wie geht das ???
Kannst du deine Frage evtl. etwas genauer formulieren?
Mit welchen Optionen möchtest du denn durchsuchen? |
Re: TReplaceDialog - Wie geht das ???
Alle Optionen die TReplaceDialog hat sollen funktionnieren. Ich sitze jetzt schon seit 3 Stunden dran, krigs aber immer noch nich gebacken!
|
Re: TReplaceDialog - Wie geht das ???
Hab zwar schon lange nicht mehr mit ReplaceDialogs gearbeitet, aber ich denke so in etwa ging das:
Mal ein Beispiel:
Delphi-Quellcode:
Natürlich geht das auch mit einer Case-Abfrage...
if ReplaceDialog1.Execute then
begin if frReplaceAll in ReplaceDialog1.Options then // User hat auf "Alles ersetzen" geklickt else if frReplace in ReplaceDialog1.Options then // User hat auf "Ersetzen" geklickt else // User hat auf "Weitersuchen" geklickt end else // User hat auf "Abbrechen" geklickt |
Re: TReplaceDialog - Wie geht das ???
Delphi-Quellcode:
[add]
if ReplaceDialog1.Execute then
// ReplaceDialog1.FindText suchen und durch ReplaceDialog1.ReplaceText ersetzen // z.B.: RichEdit1.Lines.Text := StringReplace(RichEdit1.Lines.Text, ReplaceDialog1.FindText, ReplaceDialog1.ReplaceText, [rfReplaceAll]); wußte ja nicht, dat rfReplaceAll auch in .Options "gesetzt wird, also dat vom Vorgänger ^^ [add2] gibt's da nicht eine Demo im Delphi ... einen Editor mit TRichEdit und suchen/ersetzen war da auch mit drin (denk ich) |
Re: TReplaceDialog - Wie geht das ???
:oops: Uuups...
Das heißt alles fr... und nicht rf... //Edit: Beitrag oben bearbeitet! [] gehörten da auch nicht hin... Übrigens: Beim ReplaceDialog gibts auch zwei Ereignisse: - OnFind - OnReplace Bei OnReplace musst du dann nur noch überprüfen, ob frReplaceAll in den Options steht! |
Re: TReplaceDialog - Wie geht das ???
So, hier mal ein kleines Beispiel:
Delphi-Quellcode:
Das einzige was noch nicht drin ist, ist die Beachtung von Groß-/Kleinschreibung.
procedure TForm1.Button1Click(Sender: TObject);
begin if Length(RichEdit1.SelText) > 0 then ReplaceDialog1.FindText := RichEdit1.SelText; // Markierter Text als FindText ReplaceDialog1.Execute; // ReplaceDialog anzeigen end; procedure TForm1.ReplaceDialog1Find(Sender: TObject); // OnFind var s, sub: string; begin RichEdit1.SetFocus; if RichEdit1.SelLength > 0 then RichEdit1.SelStart := RichEdit1.SelStart +1; // ergänzt, sonst wurde der erste Buchstabe übersprungen if frMatchCase in ReplaceDialog1.Options then begin s := RichEdit1.Lines.Text; // Groß-/Kleinschreibung beachten sub := ReplaceDialog1.FindText; end else begin s := AnsiUpperCase(RichEdit1.Lines.Text); // nicht beachten sub := AnsiUpperCase(ReplaceDialog1.FindText); end; // hier dann SelStart+1 anstatt +2 RichEdit1.SelStart := PosEx(sub, s, RichEdit1.SelStart+1) -1; // Suche an aktueller Position beginnen RichEdit1.SelLength := Length(ReplaceDialog1.FindText); // Text markieren if RichEdit1.SelStart = RichEdit1.GetTextLen then // Ende erreicht? begin ShowMessage('Textende erreicht!'); RichEdit1.SelStart := 0; // zum Anfang gehen end; end; procedure TForm1.ReplaceDialog1Replace(Sender: TObject); // OnReplace var Flags: TReplaceFlags; begin if frReplaceAll in ReplaceDialog1.Options then begin if frMatchCase in ReplaceDialog1.Options then Flags := [] // Groß-/Kleinschreibung beachten else Flags := [rfIgnoreCase]; // nicht beachten RichEdit1.Lines.Text := StringReplace(RichEdit1.Lines.Text, ReplaceDialog1.FindText, // alles ersetzen ReplaceDialog1.ReplaceText, [rfReplaceAll]+Flags); ShowMessage('Alles ersetzt!'); end else begin if (not (frMatchCase in ReplaceDialog1.Options) // nicht Groß-/Kleinschreibung beachten and (AnsiUpperCase(RichEdit1.SelText) = AnsiUpperCase(ReplaceDialog1.FindText))) or (RichEdit1.SelText = ReplaceDialog1.FindText) then //oder Texte identisch RichEdit1.SelText:=ReplaceDialog1.ReplaceText; // markierten Text ersetzen ReplaceDialog1Find(Sender); // nächstes Vorkommen suchen und markieren end; end; Kannst du aber mit:
Delphi-Quellcode:
ganz schnell noch einbauen.
if frMatchCase in ReplaceDialog1.Options then
//Edit: ist eingebaut! MfG Martin |
Re: TReplaceDialog - Wie geht das ???
Super!!! Vielen Dank an Alle!!! :-D :-D :-D
|
Re: TReplaceDialog - Wie geht das ???
So, hab den Quellcode oben nochmal komplett überarbeitet, da einige Fehler drin waren...
Außerdem wird jetzt auch Groß-/Kleinschreibung berücksichtigt bzw. nicht berücksichtigt. MfG Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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