procedure TForm1.btnSearchClick(Sender: TObject); begin if Memo1.SelLength > 0 then ReplaceDialog1.FindText := Memo1.SelText; ReplaceDialog1.Execute; end;
procedure TForm1.ReplaceDialog1Replace(Sender: TObject); begin with Sender as TReplaceDialog do if frReplace in Options then DoReplace(FindText, ReplaceText) else if frReplaceAll in Options then DoReplaceAll(FindText, ReplaceText); end;
procedure TForm1.DoReplace(OldText, NewText: string); var SelPos: integer; begin { Exécute une recherche globale en tenant compte des majuscules/minuscules pour FindText dans Memo1 } SelPos := Pos(OldText, Memo1.Lines.Text); if SelPos > 0 then begin Memo1.SelStart := SelPos - 1; Memo1.SelLength := Length(OldText); { Remplace le texte sélectionné par ReplaceText } Memo1.SelText := ReplaceDialog1.ReplaceText; end else MessageDlg(Concat('Impossible de trouver "', ReplaceDialog1.FindText, '" dans Memo1.'), mtError, [mbOk], 0); end; procedure TForm1.DoReplaceAll(OldText, NewText: string); var SelPos: integer; SelCount: integer; begin SelPos := Pos(OldText, Memo1.Lines.Text); SelCount := 0; while SelPos > 0 do begin DoReplace(OldText, NewText); SelPos := Pos(OldText, Memo1.Lines.Text); inc(SelCount); end; ShowMessageFmt('%d occurence(s) remplacée(s) pour %s', [SelCount, OldText]); end;
procedure TForm1.ReplaceDialog1Find(Sender: TObject); begin Memo1.SetFocus; Memo1.SelStart := Pos(ReplaceDialog1.FindText, Memo1.Lines.Text) - 1; Memo1.SelLength := Length(ReplaceDialog1.FindText); end;
Je n'ai pas pris en compte les critères de recherche En avant/En arrière, tenir compte ou pas de la casse, etc.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question