Crytach Daiguren Ответов: 1

Как заменить ключевое слово в richedit в DELPHI


Хорошо, у меня есть дилемма, у меня есть моя программа, функционирующая идеально прямо сейчас, все, что мне нужно сделать, это взять уже существующую информацию в моем богатом редактировании, например:

NOMBRE: #########

APPELIDOS: #########

EMAIL: #########

TELEFONO DE ESTUDIANTE: #########

TELEFONO DE #########: #########

TELEFONO DE #########: #########

NIVEL DE LENGUAJE: *********



Теперь то, что я хочу сделать, это заменить '*********"с другой строкой через использование кнопки обновления и Tcombobox, но у меня нет головы или хвоста о том, как сделать код, Пожалуйста, помогите мне!!!

Что я уже пробовал:

Все, и google мне не помог.

1 Ответов

Рейтинг:
2

Maciej Los

Вставить ReplaceDialog компонент.
Добавить новое ReplaceText событие (Object Explorer -> Events закладка)
Вставьте ниже код (для компонента 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('No more matches for: "', FindText, '" have been found in the current document'), mtError, [mbOk], 0);
 
  end;
 
end;


Теперь вставьте новую кнопку и добавьте для нее событие OnClick (так же, как вы добавили его ранее) и вставьте следующий код:
ReplaceDialog1.Execute;


И, наконец, добавьте OnFind событие для ReplaceDialog

procedure TForm1.ReplaceDialogFind(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit1 do
  begin
{ if there's selected text, start looking from that place, in other case, start looking from the beginning }
    if SelLength <> 0 then
      StartPos := SelStart + SelLength
    else
      StartPos := 0;
 
  { find the end of text }
    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;


Вот и все!

Другой способ:
Как искать и заменять текст в RichEdit-Delphi Tips - CJC Delphi[^]


Crytach Daiguren

Хорошо, я прошу прощения за то, что не очень ясно, у меня есть Tcombobox, который имеет предварительно загруженные опции для обновления моего богатого редактирования, заменив ключевое слово в моем богатом редактировании, в данном случае, например: я выбираю "уровень C1" в моем Tcombobox я нажимаю btnUpdate, в моем богатом редактировании "NIVEL DE LENGUAJE: *********" должно быть изменено на "NIVEL DE LENGUAJE: уровень C1"

Maciej Los

Ну, вы должны использовать функцию FindText в цикле while, чтобы найти 'NIVEL DE LEGUAJE ' текст и заменить ##### (хэши) с текстом назначения. Вот и все! Дурачьте ссылку, которую я вам предоставил.