richedit i zmiana parametrów teksu

0

Witam. To mój pierwszy wpis, więc mam nadzieję, że podejdziecie do tematu ze zrozumieniem.
Piszę program, w którym w polu RichEdit zamieniane są wybrane słowa, np:

function Zamiana(S: String): String;
begin
S := StringReplace(S, '<nr sprawy 1>', form3.DBEdit1.Text,[rfReplaceAll, rfIgnoreCase]);
S := StringReplace(S, '<nr sprawy 2>', form3.DBEdit2.Text,[rfReplaceAll, rfIgnoreCase]);

.....

Result := S;
end;

procedure Tfdrukuj.BitBtn1Click(Sender: TObject);
var
i: byte;
st: string;
pozycja: integer;
begin
if checklistbox1.Items.Count>0 then begin
for i:=0 to checklistbox1.Items.Count-1 do
if checklistbox1.Checked[i] then begin
st:=filelistbox1.Directory+'\';
richedit1.Clear;
richedit1.Lines.LoadFromFile(st+checklistbox1.Items[i]);
end;

richedit1.Text:=Zamiana(richedit1.Text);

end;
end;

Zmiany następują idealnie, wszystko jest ok, ale po wykonaniu wszystkich zmian sformatowany wcześniej tekst (tzn. pogrubienia, pismo pochyłe, wycentrowanie tekstu itp.) zostaje zniwelowane, cały tekst jest sformatowany jednym rodzajem czcionki i wyjustowany do lewej. Co zrobić? Pozdrawiam wszystkich i będę wdzięczny za podpowiedź. ravcom

P.S. tekst ładowany do RichEdit jest *.rtf

0

Zapisz ustawienia tekstu przed edycją do zmiennej TTextAttributes, a następnie załaduj je z powrotem po edycji.

0

Próbowałem, ale to nic nie daje.

0

richedit1.Text:=Zamiana(richedit1.Text);

W tej linii kodu cały tekst jest ładowany z funkcji, której rezultatem jest typ string, ten nie przybiera takich właściwości - musisz znajdować sobie te fragmenty, które chcesz zamienić, zaznaczyć i wtedy zamienić. Natomiast RichEdit.Text := ... zawsze załaduje nie sformatowany tekst - bo typ string tak ogranicza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1