Kako da obojim tekst - reseno

Kako da obojim tekst - reseno

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Problem je sledeci:
Pokusavam da napravim preview za splash screen za ISOLinux. Da ne zamaram time sta je ISOLinux i SysLinux nego da predjem na problem.
Splash screen je tekstualni fajl koji sadrzi jos podatke o boji teksta i boji pozadine a te boje mogu da se menjaju u bilo kom delu teksta i vaze do sledece promene.
Primer:

¤0e ovo je tekst ¤07 ovo je tekst druge boje....
¤0e = '0' je boja pozadine, 'e' je boja slova

Pokusavam MEMO komponentu da nateram da mi prikaze ovo, medjutim svaka promena boje mi utice na ceo tekst.
Ja sam pokusao da resim to ovako, ali ne ide..

procedure TGlavna.EditorChange(Sender: TObject);
var
duzina: word;
tekst: string;
bafer: string;
boja1: string;
boja2: string;
brojac: integer;
begin
tekst := Editor.Text;
duzina := length(tekst)+1;
brojac := 0;
Preview.Text := '';
while brojac < duzina do
begin
bafer := copy (tekst,brojac,1);
if bafer = chr(12) then
begin
preview.Text := ''; // clear screen
end;
if bafer = chr(15) then
begin
boja1 := copy (tekst,brojac+1,1);
boja2 := copy (tekst,brojac+2,1);
bafer := '';
if boja1 = '0' then preview.Color := clBlack;
if boja1 = '1' then preview.Color := clNavy;
if boja1 = '2' then preview.Color := clGreen;
if boja1 = '3' then preview.Color := clOlive;
if boja1 = '4' then preview.Color := clMaroon;
if boja1 = '5' then preview.Color := clPurple;
if boja1 = '6' then preview.Color := clMaroon;
if boja1 = '7' then preview.Color := clSilver;
if boja1 = '8' then preview.Color := clGray;
if boja1 = '9' then preview.Color := clBlue;
if boja1 = 'a' then preview.Color := clLime;
if boja1 = 'b' then preview.Color := clMoneyGreen;
if boja1 = 'c' then preview.Color := clRed;
if boja1 = 'd' then preview.Color := clFuchsia;
if boja1 = 'e' then preview.Color := clYellow;
if boja1 = 'f' then preview.Color := clWhite;

if boja2 = '0' then preview.font.Color := clBlack;
if boja2 = '1' then preview.font.Color := clNavy;
if boja2 = '2' then preview.font.Color := clGreen;
if boja2 = '3' then preview.font.Color := clOlive;
if boja2 = '4' then preview.font.Color := clMaroon;
if boja2 = '5' then preview.font.Color := clPurple;
if boja2 = '6' then preview.font.Color := clMaroon;
if boja2 = '7' then preview.font.Color := clSilver;
if boja2 = '8' then preview.font.Color := clGray;
if boja2 = '9' then preview.font.Color := clBlue;
if boja2 = 'a' then preview.font.Color := clLime;
if boja2 = 'b' then preview.font.Color := clMoneyGreen;
if boja2 = 'c' then preview.font.Color := clRed;
if boja2 = 'd' then preview.font.Color := clFuchsia;
if boja2 = 'e' then preview.font.Color := clYellow;
if boja2 = 'f' then preview.font.Color := clWhite;
brojac := brojac +2;
end;
preview.Text := preview.Text + bafer;
preview.Refresh;
brojac := brojac+1;
end;
end;

Editor mi je jedna Memo komponenta u koju mogu da upisujem a Preview je druga Memo komponenta koja je ReadOnly i treba da mi prikaze tekst kakav bi izgledao u ISOLinuxu. Probao sam i sa RichEdit komponentom - isti rezultat.
Pomagajte molim vas.

-----------------------------------------------
Dodato

Uspeo sam da regulisem boju slova tako sto sam za preview uzeo RichEdit, ali jos uvek ne mogu da regulisem boju pozadine svakog slova posebno.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 18 Apr 2003
  • Poruke: 1819
  • Gde živiš: Beograd

Ja samo znam da kad stavis nesto na readonly:= true, da onda slova posive...i ne mozes im nista...Nemam vremena sad, ali ako ti nije hitno, pogledacu kasnije o cemu se radi...



offline
  • Pridružio: 01 Feb 2004
  • Poruke: 16
  • Gde živiš: Valjevo

kolko se ja secam, memo komponenta je i napravljena tako da promena teksta utice na kompletan prikaz u komponenti... tako da nemas mogucnost da od nekog trenutka pa nadalje koristis drugu boju teksta. Zapravo, memo komponenta sluzi za prikaz neformatiranog teksta gde se pod formatiranje smatra i promena boje teksta (u okviru teksta).
Dakle, odatle sledi, ako hoces resenje, batali memo komponentu.
Sto se tice RichEdit komponente, tu je situacija malo drugacija... Ona omogucava formatiranje teksta na nivou fontova i na nivou paragrafa. Ono sto tebi treba je na nivou fonta. E, tu lezi kvaka...
Fontovi nisu bas definisani kao fontovi u konzoli gde postoji fiksna matrica slova pa se slovo definise bojom pozadine i bojom samog slova. Ukoliko pogledas dijalog za font u bilo kojoj delphi kontroli videces da se pominje samo boja fonta (prakticno boja slova) a ne i boja pozadine. Pozadina slova zavisi od "kontejnera" u kojem se slova nalaze. U tvom slucaju, kontejner je u prvom slucaju predstavljao celu Memo, a u drugom celu RichEdit komponentu. Ne mogu da se setim da li u Rich Text formatu (po standardu) postoji neki kod koji definise boju pozadine i dal li ga RichEdit komponenta razume (nesto ne verujem)
Ali, za takve gimnastike koje zelis da radis se uglavnom koristi custom crtanje po kontroli uz koriscenje onpaint i slicnih metoda ali nisam siguran koliko je vredno truda. Ako bas hoces da se zezas, mozda je jedan od pristupa koriscenje standardnih Label komponenti i pravljenje "mozaika"

Ko je trenutno na forumu
 

Ukupno su 1331 korisnika na forumu :: 19 registrovanih, 5 sakrivenih i 1307 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Areal84, Bane san, Djokislav, FileFinder, indja, jackreacher011011, krkalon, ladro, laki_bb, Lazarus, maCvele, Milometer, Oscar2, panzerwaffe, sickmouse, SlaKoj, vlad the impaler, W123, zzapNDjuric99