Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?

[es] :: Pascal / Delphi / Kylix :: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?

[ Pregleda: 4288 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Divjak
Vladimir Divjak
Student

Član broj: 4783
Poruke: 535
*.zrenjanin.beotel.net.



+1 Profil

icon Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?28.04.2005. u 17:54 - pre 231 meseci
Dakle, preporucite neku komponentu u kojoj se redovi ekstremno lako boje, i koja ima mogucnost da u zavisnosti od value nekog polja da boju fontu...

And don't be mad at me for crying for humanity,
call it pretensions but I got good intentions,
to keep my sanity, I'm hoping, fuck, there's gotta be
an answer to their strategies and their evil inventions... ~Looptroop
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?29.04.2005. u 00:29 - pre 231 meseci
To mozes uraditi i sa obicnom (DB)Grid komponentom. U OnDrawCell eventu na osnovu vrednosti celije postavis Brush.Color i Font.Color (ili mozda jos neki atribut za font... recimo bold) na zeljenu vrednost. Brush.Color je boja pozadine, a Font>Color je boja texta. Kad to sve podesis pozoves samo DefaultDraw (ne secam se kako se tacno zove funkcija) i ona ce sa definisanim bojama iscrtati celiju.
 
Odgovor na temu

tamnicar
sremska mitrovica

Član broj: 54010
Poruke: 67
*.beotel.net.



Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?29.04.2005. u 09:36 - pre 231 meseci
samo da se nadovezem na Srki-ja, i da "konkretninje" objasnim :)
evo kako sam ja odradio,
na property DrawDolumnCell, DBGrid-a sam stavio code:

If odd(izvorPodataka.DataSet.RecNo) then
tabelaIzbora.Canvas.Brush.Color:=nekaBoja
else
tabelaIzbora.Canvas.Brush.Color:=nekaDrugaBoja;

tabelaIzbora.DefaultDrawColumnCell(Rect,DataCol,Column,State);

ovaj code mi daje za rezultat da mi svaki neparan red bude obojen u nekaDrugaBoja, a paran u nekaBoja!

evo ti jos jedan primer kako se boji red koji je selektovan:
if (gdSelected in State) then
begin
DBGrid1.Canvas.Font.Color := clPurple;
DBGrid1.Canvas.Brush.Color := clLime;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top,Column.Field.AsString);
end
else
begin
DBGrid1.Canvas.Font.Color := clBlue;
DBGrid1.Canvas.Brush.Color := clAqua;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top,Column.Field.AsString);
end;

poz :wave:
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.nat-pool.bgd.sbb.co.yu.



+1 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?29.04.2005. u 14:50 - pre 231 meseci
@tamnicar
U onaj drugi primer treba da se doda provera kako je poravnat tekst u koloni:
Code:

const
  TextDist = 3;
...
...
  if Column.Alignment = taLeftJustify then
    TDBGrid(Sender).Canvas.TextOut(Rect.Left + TextDist, Rect.Top, Column.Field.AsString)
  else if Column.Alignment = taRightJustify then
    TDBGrid(Sender).Canvas.TextOut(Rect.Right - TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsString) - TextDist, Rect.Top, Column.Field.AsString)
  else
    TDBGrid(Sender).Canvas.TextOut((Rect.Right - Rect.Left - TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsString)) div 2 + Rect.Left, Rect.Top, Column.Field.AsString);


Ovo mozes da stavis u poseban unit i svakoj Dbg u projektu dodelis za OnDrawColumnCell, onda svi gridovi ce se isto iscrtavati. Lose je koristiti specijalizovano npr. DBGrid1 kda imas Sender. Takodje treba da TDBGrid.DefaultDrawing stavis na false.

Btw. jel zna neko kako bez pisanja f-je koja sabira sirine column-a dobiti zbirnu sirinu svih polja (potrebno za iscrtavanje focucRect sa ivicama).
 
Odgovor na temu

engineer

Član broj: 45205
Poruke: 113
*.metrohive.neobee.net.

Jabber: engineer


Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?30.04.2005. u 09:44 - pre 231 meseci
Imate zanimljivih tekstova na About.com - pogledajte na primer http://delphi.about.com/od/usedbvcl/l/aa031699.htm
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
195.222.35.*



+1 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?07.09.2005. u 09:12 - pre 226 meseci
Ovo je sve OK..

mene zanima kako da obojim pojedine redove dbgrid-a na klik dugmeta,
koje se nalazi na istoj formi kao i dbgrid, npr. da ofarba sve redove koji imaju vrijednost -1 za neko polje...

Hvala
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
82.117.210.*

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?15.09.2005. u 17:23 - pre 226 meseci
Code:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if (Column.FieldName='xxxxx') then
    if Column.Field.AsFloat=-1 then
      begin
        DBGrid1.Canvas.Font.Color:=clRed;
        DBGrid1.Canvas.Brush.Color:=clLime;
      end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;


[Ovu poruku je menjao dogriz dana 15.09.2005. u 18:24 GMT+1]
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
195.222.35.*



+1 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 06:08 - pre 226 meseci
U pravu si... ovo ce ofarbati te kolone... ali kako to uciniti na buttonclick ili na neki drugi event:)

Pozdrav
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 08:31 - pre 226 meseci
Dodaj jednu boolean promenljivu... recimo Oboji: Boolean i pritiskom na zeljeno dugme taj flag postavi na True ili slicno i kada primis OnDrawColumnCell event prvo proveris flag i na osnovu njega odlucujes kojom bojom sta da bojis.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
195.222.35.*



+1 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 09:03 - pre 226 meseci
Vazi li to i kada je dbgrid vec nacrtan na formu tj kada se to dugme nalazi na istoj formi kao i db grid*
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 10:30 - pre 226 meseci
Naravno da vazi. Kad promenis flag samo pozoves DBGrid.Refresh i grid ce se ponovo iscrtati.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
195.222.35.*



+1 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 10:40 - pre 226 meseci
WOW radi hvala puno ...samo me jos interesuje kako obojiti citav red a ne samo celiju u kojoj je podatak

Hvala jos jednom ;)
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?16.09.2005. u 15:54 - pre 226 meseci
Koristi OnDrawDataCell event.

Code:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  if Table1.FieldByName('Cena').AsFloat > 1000000 then
    DBGrid1.Canvas.Brush.Color := clRed;
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako obojiti jedan red / cell u DBGrid ~ like komponenti i kojoj?

[ Pregleda: 4288 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.