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