1. Wenn ich sehe, dass hier von TForm5 auf die globale Variable Form1 zugegriffen wird, wird mir schon ganz anders. Aber das soll erstmal nicht unser Problem sein.
2. Das rfReplaceAll nur das erste Vorkommen ersetzt, glaube ich nicht. Wenn du das Suchen & Ersetzen nur auf den selektierten Text anwendest und dieser nur ein einmaliges Vorkommen hat, ist es doch irgendwie logisch, oder?
3. Du baust doch hier anscheinend einen Suchen & Ersetzen Dialog. Warum findet denn der Suchen Dialog nicht den Text und markiert ihn? Dann sollte die Routine unten das Ersetzen durchführen und wenn dann noch "Alle Vorkommen ersetzen" vom Nutzer ausgewählt ist, dann kann der Suchen-Dialog weiter suchen bis er nichts mehr findet. Das er hier markiert und ersetzt ist irgendwie recht merkwürdig.
4. Ich sehe nirgendwo in deinem Code wo und wie du rfReplaceAll angibst.
5. Schonmal den Debugger benutzt und dir den Inhalt der Variablen angeschaut?
6. Warum benennst du die Elemente nicht einfach mal nutzbar? Dann müssten wir nicht den Code anschauen was CheckBox1 macht, sondern wüssten beim Lesen von ckbIgnoreCase sofort, was die CheckBox bewirkt.
7. Warum soviel doppelter Code?
Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
var
lFlags: TReplaceFlags;
begin
lFlags := [];
if ckbIgnoreCase.Checked then
Include(lFlags, rfIgnoreCase);
if ckbReplaceAll.Checked then
Include(lFlags, rfReplaceAll);
Form1.Memo1.Lines.Text := StringReplace(Form1.Memo1.Lines.Text, FindText.Text, ReplaceText.Text, lFlags);
end;