Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!
Her er koden:
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
Mem : TRichEdit;
begin
Mem := TRichEdit(FindComponent('Edits' + IntToStr(Dokumenter.ActivePage.Tag)));
if Mem.SelLength = 0 then
begin
FindDialog1Find(Sender);
end
else
begin
if not (Mem.SelLength = 0) then begin
Mem.SelText := ReplaceDialog1.ReplaceText;
FindDialog1Find(Sender);
end;
if frReplaceAll in ReplaceDialog1.Options then
while (Mem.SelLength <> 0) do
ReplaceDialog1Replace(Sender);
end;
end;
Mem er en RichEdit!
MVH.
Armen L.A.
Jeg kan ikke gennemskue din kode, men her er en funktion til at søge og erstatte:
<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelText := InReplace;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>
For at bruge den skriver du:
SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False);
eller hvis du vil starte fra et bestemt sted:
SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False, RichEdit1.SelStart);
False viser at der ikke skal bruges ReplaceAll.
Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk