Zamiana (Replace) tekstu w RichEdit
Trepp
Na początku wstawiamy komponent ReplaceDialog.
Potem w Object Inspektorze na zakładce Events klikamy podwójnie na pustą rubryczkę obok ReplaceText.
Teraz mały kodzik, który musimy tam wstawić (dla komponentu RichEdit):
var
SelPos: Integer;
begin
with TReplaceDialog(Sender) do
begin
SelPos := Pos(FindText, RichEdit1.Lines.Text);
if SelPos > 0 then
begin
RichEdit1.SelStart := SelPos - 1;
RichEdit1.SelLength := Length(FindText);
{ Replace selected text with ReplaceText }
RichEdit1.SelText := ReplaceText;
end
else MessageDlg(Concat('Nie znaleziono więcej "', FindText, '" w dokumencie'), mtError, [mbOk], 0);
end;
end;
</span>
I tyle. Musimy jeszcze zrobić button lub cokolwiek innego, i w OnClicku wstawiamy :
<font face="Courier New">
```delphi
ReplaceDialog1.Execute;
</span>
I tyle. Powinno działać.
W ReplaceDialog w events wydarzenie "ON Find" Należy wypełnić kodem:
<font face="Courier New"> ```delphi procedure TForm1.ReplaceDialogFind(Sender: TObject); var FoundAt: LongInt; StartPos, ToEnd: Integer; begin with RichEdit1 do begin { jeśli jest zaznaczony tekst, to zaczyna szukać od momentu zaznaczonego tekstu jeśli nie ma, to od początku} if SelLength < 0 then StartPos := SelStart + SelLength else StartPos := 0;{ ustala koniec przeszukiwanego tekstu }
ToEnd := Length(Text) - StartPos;
FoundAt := FindText(ReplaceDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(ReplaceDialog1.FindText);
end;
end;
end;
</span>
Teraz powinno działać :)
Tyle tego szykałem i nareszcie znalazłem :). Mam tylko jedno zastżezenie - nie chodzi "Zamien wszystkie" i nie zaznacza się znaleziony tekst w RichEdit. Ale troche pomyśle i jakoś poprawie :). U mnie w HELPIE tego nie ma!!!
Po co to komu jak to jest w Helpie do Delphi :/
Nareście ktoś się wysilił tyle tego szukałem, na forum muwili że to już było pełno razy, no ale teraz jest
nieeee DO FAQ
DO GOTOWCOW!!