Programowanie w języku Delphi » FAQ

Zamiana (Replace) tekstu w RichEdit

  • 2008-12-08 13:12
  • 5 komentarzy
  • 1382 odsłony
  • Oceń ten tekst jako pierwszy
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):

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;



I tyle. Musimy jeszcze zrobić button lub cokolwiek innego, i w OnClicku wstawiamy :

ReplaceDialog1.Execute;



I tyle. Powinno działać.


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

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;



Teraz powinno działać :)

5 komentarzy

.oO NoRiN Oo. 2005-03-14 18:16

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

-=ORanGE=- 2005-01-21 15:54

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

player15 2003-03-10 18:21

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

Sebek 2003-03-02 15:24

nieeee DO FAQ