Delphi » FAQ

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):

<font face="Courier New">

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);

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">

ReplaceDialog1.Execute;

</span>

I tyle. Powinno działać.

W ReplaceDialog w events wydarzenie "ON Find" Należy wypełnić kodem:

<font face="Courier New">

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ć :)

FAQ

5 komentarzy

nieeee DO FAQ

Nareście ktoś się wysilił tyle tego szukałem, na forum muwili że to już było pełno razy, no ale teraz jest

Po co to komu jak to jest w Helpie do Delphi :/

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!!!