Zadatak iz Delfija - formatiranje poruke

Zadatak iz Delfija - formatiranje poruke

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

Zadatak: Treba da napravim GUI kao na slici:



to sam uradio. Treba da podesim dugme "Formatiraj poruku" da kada pritisnem na njega mogu da promenim boju slova,i takodje da mogu da menjam njihov oblik (kurziv,podebljano,podvuceno).
E sad boje sam uspeo da sredim pomocu petlje case
case RgrpBoja.ItemIndex of 0: EdtPoruka.Color:=clRed; 1: edtPoruka.Color:=clBlue   ; 2: edtPoruka.Color:=clGreen ; 3: edtPoruka.Color:=clYellow  ; 4: edtPoruka.Color:=clBlack;

ali stilove nikako ne mogu da promenim.
Stilovi sam morao da "pravim" preko checkBoxa (posto ne postoji nesto kao CheckGroup) i svaki od njih je poseban objekat tako da nemam ideju kako da nateram ovaj kod da proradi (u knjizi u kojoj mi je data vezba imam vec i kod)
EdtPoruka.Font.style:= [fsbold,fsitalic,fsunderline]; i EdtPoruka.Font.Style:=[] {za ponistavanje svih stilova slova}
ali kad god napisem prvi kod desi se da mi slova budu u sva tri oblika, a kada ubacim ovu drugu liniju slova nece da se promene. Kada ih kucam posebno,izbaci mi samo zadnji. (npr ako je zadnji fsBold, slova ce samo biti podebljana nista drugo ne bih mogao da uradim)....
ako bi neko mogao da mi pomogne bio bih mu zahvalan.....



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Sta se desava ako na klik uradis ovo:
EdtPoruka.Font.style:= [fsbold]; EdtPoruka.Font.style:= [fsitalic];
hoce li biti podebljana i iskosena ili samo iskosena?
Pitam, jer ne znam sintaksu delphi-ja , radio sam nesto bzvz u srednjoj skoli samo.

Ako je podebljana i iskosena, onda ubacis jedan if, i ispitujes za svaki od ta tri checkbox-a da li otkacen ili ne(postoji neki metod za ispitivanje sigurno), ako jeste samo mu dodas taj deo, recimo , ako je otkacen podebljan u tom if-u stavis
EdtPoruka.Font.style:= [fsbold];
i slicno i za druga dva...i mislim da ce raditi...
A pre svega toga ponistis, znaci, na pocetku akcije stavis ovaj deo:
EdtPoruka.Font.Style:=[] {za ponistavanje svih stilova slova}
da ti ponisti sta je u prethodnom formatiranju bilo, pa tek onda stavis ta tri if-a



offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

kada ih stavim po tom redosledu oni budu samo iskoseni,a ako idem obrnutim redosledom budu podebljana.

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Napisano: 18 Avg 2011 2:26

Onda je jedan nacin, nacin grube sile, da za te tri stavke ispitas 9 kombinacija.
Postoji verovatno elegantnije resenje, ali ne znam kako moze da se na postojeci stil samo doda novi a da se ne izgubi stari...

Dopuna: 18 Avg 2011 2:31

Evo ga nacin za "nadogradnju"
    Canvas.Font.Style := Canvas.Font.Style + [fsBold];
Dakle, mozes samo da opalis tri if-a i ako je otkacen bold, dodas mu samo na prethodno opisan nacin, ako je italic - slicno

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

stavih IF ali
if EdtPoruka.Font.style= [fsitalic] then EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsbold]; EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsunderline]; if EdtPoruka.Font.style= [fsbold] then EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsitalic]; EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsunderline]; if EdtPoruka.Font.style=[fsunderline] then EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsitalic]; EdtPoruka.Font.style:=EdtPoruka.Font.style + [fsbold]; end;
opet se isto desava.... dobijem sva tri....

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

if EdtPoruka.Font.style= [fsitalic] then
ne proveravas to, los ti je uslov.
Proveravas da li je checkbox otkacen...
If CheckBox1.Checked then
Samo umesto checkbox1 stavi kako ti se zove checkbox za svaki od njih

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3895
  • Gde živiš: Novi Sad,Klisa

e vidis to mi nije pisalo u knjizi GUZ - Glavom U Zid sad ce da probam Ziveli
RADI Ziveli hvala imenjace Ziveli Ziveli

offline
  • Pridružio: 02 Jul 2008
  • Poruke: 125

Evo kako bih ja to uradio (cbI, cbB, cbU - check boksovi za Kurziv, podebljano i podvučeno):

if cbI.Checked then EdtPoruka.Font.Style := EdtPoruka.Font.Style + [fsitalic] else EdtPoruka.Font.Style:= EdtPoruka.Font.Style - [fsitalic];
if cbB.Checked then EdtPoruka.Font.Style := EdtPoruka.Font.Style + [fsbold] else EdtPoruka.Font.Style:= EdtPoruka.Font.Style - [fsbold];
if cbU.Checked then EdtPoruka.Font.Style := EdtPoruka.Font.Style + [fsunderline] else EdtPoruka.Font.Style:= EdtPoruka.Font.Style - [fsunderline];

Ko je trenutno na forumu
 

Ukupno su 840 korisnika na forumu :: 34 registrovanih, 4 sakrivenih i 802 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., aljosa7, amaterSRB, Apok, bankulen, Chainsaw, debeli, Dimitrise93, Djole, Duh sa sekirom, Gabriel18, goxin, GrM, HDMI, ikan, Kaplar2, Kožedub, Marko Marković, milekNS, nemkea71, Profica2, Recce, renoje2, S-lash, Skywhaler, vasjas, Vlad000, Vlada1389, vlvl, voja64, vukdra, wizzardone, zillbg, zixo