ďťż

Ładny brzuch

Może ktoś wie jak odczytać które części tekstu w RichEdit są sformatowane i jakie mają "opcje"? (np. w RichEdit jest tekst pokolorowany różnymi kolorami i pogrubiony w niektórych miejscach. Jak to zapisać do HTML?)

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712



nie wiem o co chodzi, ale użyj SynEdit`a

//----------------------
z_forum_experta@beldzio.com
www.beldzio.com
Szukam betatesterów chętnych proszę o wpisanie się na wyżej wymienionej stronie
callto://beldzio_software

cytat:Ali240 napisał:

Może ktoś wie jak odczytać które części tekstu w RichEdit są sformatowane i jakie mają "opcje"? (np. w RichEdit jest tekst pokolorowany różnymi kolorami i pogrubiony w niektórych miejscach. Jak to zapisać do HTML?)
Możesz np. "przelecieć" po wszystkich znakach RichEdit'a sprawdzając interesujące Cię dane w SelAttributes.

ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486

Spróbuj tak: dodaj do
types taki rekord:
TFormat = record
b, i, u: boolean;
color: tcolor;
end;

a pozniej juz procedurki:

function color2html(color: tcolor): string;
begin
Result:='#' + IntToHex(GetRValue(color), 2) +
IntToHex(GetGValue(color), 2) +
IntToHex(GetBValue(color), 2);
end;

procedure openhtml(var s: string; k: TFormat);
begin
if k.b then s:=s + '<b>';
if k.i then s:=s + '<i>';
if k.u then s:=s + '<u>';
s:=s + '<font color=' + color2html(k.color) + '>';
end;

procedure closehtml(var s: string; k: TFormat);
begin
if k.b then s:=s + '</b>';
if k.i then s:=s + '</i>';
if k.u then s:=s + '</u>';
s:=s + '</font>;'
end;

function equal(a, b: TFormat): boolean;
begin
result:=(a.b = b.B) and (a.u = b.u) and (a.i = b.i) and (a.color =
b.color)
end;

function Conver(RichEdit1:TRichEdit):string;
var
k, nk: TFormat;
res: string;
i: Integer;
attr: TTextAttributes;
begin
res:='<html><body>';
richedit1.selstart:=1;
richedit1.sellength:=1;
attr:=richedit1.selattributes;

k.b:=fsBold in attr.Style;
k.u:=fsUnderline in attr.Style;
k.i:=fsItalic in attr.Style;
k.color:=attr.Color;

openhtml(res, k);
res:=res + richedit1.lines.text[1];

for i:=2 to length(richedit1.lines.text) do begin
if richedit1.lines.text = #10 then Continue;
if richedit1.lines.text[i] = #13 then begin
res:=res + '<br>';
Continue
end;

richedit1.selstart:=i;
richedit1.sellength:=1;
attr:=richedit1.selattributes;

nk.b:=fsBold in attr.Style;
nk.u:=fsUnderline in attr.Style;
nk.i:=fsItalic in attr.Style;
nk.color:=attr.Color;

if not equal(nk, k) then begin
closehtml(res, k);
openhtml(res, nk);
k:=nk
end;

res:=res + richedit1.lines.text[i]
end;

closehtml(res, nk);

res:=res + '</body></html>';
result:=res;
end;

No to już koniec...
A jeszcze tylko użycie: procedure [i]convert zwraca tekst (string) ze sformatowanym tekstem. Tekst do formatowania podajemy w jej argumentach, jako TRichEdit.
Przykład.Wrzuć na forme RichEdit(nazwa:TRichEdit1, tu bedzie tekst do sformatowania), Memo (nazwa:Memo1 , tu bedzie kod HTML) oraz buttona(nazwa:button1 , caption:formatuj!). I w Button1.onclick dajemy:

Memo1.Lines.Text:=Convert(RichEdit);

To już chyba na prawde wszystko

Szukam osób znających się na programowaniu w Delphi OpenGL / TrueVision for Delphi. Proszę o kontakt migajek@o2.pl



cytat:migajek napisał:
...

Wystarczyło napisać, że trzeba sprawdzić każdy znak po kolei :) ale dzięki.

A może jest inny sposób na odczytanie formatowania :?

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

Miałem przypływ twórczości i od razu walnąłem kod na konwertowanie do HTMLa... Czasem tak mam;)

Zapraszam na moją stronkę o programowaniu:http://www.migsoft.prv.pl

Ja innego nie znam, chyba trza po kolei ;)

Zapraszam na moją stronkę o programowaniu:http://www.migsoft.prv.pl

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •