[ fusion3 @ 12.09.2006. 00:11 ] @
| Kako da obojim svaki drugi red ili svaki neparni red u DBGrid-u sa obicnog Button-a?
Ni jedan red DBGrid-a ne mora biti selektovan nego samo onako - "kliknes button" i da odradi posao?
Citao sam ranije postove od vas i probao one kodove tamo ali nisam se bas snasao.
Da li mi treba, kada napisem kod na OnDrawDataCell, da taj kod pozovem sa button-a ili sta vec. Ja samo hocu da to bude button.
hvala!
|
[ savkic @ 12.09.2006. 08:06 ] @
> Kako da obojim svaki drugi red ili svaki neparni red u DBGrid-u sa obicnog Button-a?
> Ni jedan red DBGrid-a ne mora biti selektovan nego samo onako - "kliknes button" i da odradi posao?
> Citao sam ranije postove od vas i probao one kodove tamo ali nisam se bas snasao.
> Da li mi treba, kada napisem kod na OnDrawDataCell, da taj kod pozovem sa button-a ili sta vec. Ja samo hocu
> da to bude button.
To bojenje moraš da radiš iz OnDrawDataCell, bilo je primera ranije za razna bojenja pa verovatno ima i za to što tebi treba. A kako to aktivirati pritiskom na dugme, dodaš neki flag (boolean promenljiva) koju ćeš setovati iz buttona a u onDrawDataCellu aktivirati bojenje kada je i ona setovana. Ili mošeš i raditi bez posebnog flaga tako što ćeš kada trebaš bojiti dodeliti handler gridovom OnDrawDataCellu a kada ne treba ukloniti ga.
[ fusion3 @ 12.09.2006. 22:48 ] @
Hvala savkicu za te neke naznake. Nego, malo sam ja razmisljao i shvatio da mi treba DBGrid ciji ce neparni slogovi (redovi) stalno biti obojeni nekom_bojom a parni nekom_bojom2. Sta treba da uradim da bih ovo realizovao. Gde da napisem kod i potom kada pokrenem projekat preko Run (F9) da DBGrid zateknem u "obojenom stanju".
Hvala...
[ savkic @ 13.09.2006. 11:45 ] @
> Hvala savkicu za te neke naznake. Nego, malo sam ja razmisljao i shvatio da mi treba DBGrid ciji ce neparni
> slogovi (redovi) stalno biti obojeni nekom_bojom a parni nekom_bojom2. Sta treba da uradim da bih ovo
> realizovao. Gde da napisem kod i potom kada pokrenem projekat preko Run (F9) da DBGrid zateknem u "obojenom stanju".
Najbolje da napraviš novi grid - naslednika TDBGrida. Ne mogu ti sada reći koju tačno metodu da overajduješ, ali pretpostavljam da postoji DoOnDrawDataCell ili možeš pogledati paint metodu grida i videti gde se radi bojenje ćelija. Verovatno ti je još bolja varijanta da uzmeš neku third party grid komponentu, one imaju i to i još dosta drugih mogućnosti.
[ milnen @ 13.09.2006. 12:53 ] @
Evo ga resenje. Probao sam i radi.
http://www.tek-tips.com/faqs.cfm?fid=6087
[Ovu poruku je menjao milnen dana 13.09.2006. u 14:15 GMT+1]
[ fusion3 @ 13.09.2006. 23:12 ] @
Hvala svima! Ovo je OK!
[ fusion3 @ 19.09.2006. 17:47 ] @
Sto se tice ovih boja razlicitih redova sve je OK, ali sad imam jos jedan (glup) problem - nece da mi poravna slogove u sredini nego sve na levoj strani svake od kolona. Otvarao sam Columns i tamo za svaku kolonu postavio Alignment na caCenter ali on to ignorise posto se koristi OnDrawColumnCell a za njega je potrebno da se DefaultDraw postavi na false. Na normalan DBGrid ovaj Alignment radi a na ovaj obojeni nece. Probao sam sa kodom Form1.DBGrid1.Columns[1].Alignment := caCenter ali nece. Taj kod sam postavljao na OnDrawColumnCell i na neki Button ali nece.
Zna li neko?
Hvala
[ savkic @ 20.09.2006. 08:08 ] @
> Sto se tice ovih boja razlicitih redova sve je OK, ali sad imam jos jedan (glup)
> problem - nece da mi poravna slogove u sredini nego sve na levoj strani
> svake od kolona.
Pošalji kod koji koristiš za crtanje sadržaja ćelija.
[ fusion3 @ 20.09.2006. 12:05 ] @
Dobro evo ti kod:
Code:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
Form1.DBGrid1.Canvas.Font.Color := clBlack;
if Odd(Form1.ADOQuery3.RecNo)
then
begin
Form1.DBGrid1.Canvas.Brush.Color := clGreen
end
else
Form1.DBGrid1.Canvas.Brush.Color := clYellow;
Form1.DBGrid1.Canvas.TextRect(rect, rect.Left,rect.top, Form1.DBGrid1.Fields[DataCol].AsString);
end;
Dakle, kada se ovaj kod postavi tamo na OnDrawColumnCell bojenje radi odlicno dok se tekst u kolonama poravna uz levu ivicu a ja hocu da bude na sredini. Drugo, kada je DBGrid ovako obojen ne radi mi selektovanje redova - jednostavno ne mozes nikako da selektujes red.
I eto to je, uglavnom, to. Pozdrav...
[ savkic @ 20.09.2006. 15:06 ] @
Code:
DBGrid1.Canvas.Font.Color := clBlack;
if Odd(Table1.RecNo)
then
DBGrid1.Canvas.Brush.Color := clGreen
else
DBGrid1.Canvas.Brush.Color := clYellow;
if gdFocused in State then
DBGrid1.Canvas.Brush.Color := clHighlight;
DBGrid1.Canvas.Brush.Style := bsSolid;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
[ fusion3 @ 20.09.2006. 18:01 ] @
Code:
const n=100
begin
for i=1 to n do
begin
ShowMessage('Hvala savkic!');
end;
end;
Hvala za ovaj kod. Pozdravljam te.
[ savkic @ 21.09.2006. 07:37 ] @
E baš si me slatko nasmejao :)
[ fusion3 @ 27.09.2006. 22:59 ] @
E sad mi treba jos ovo: (sta cu dok razvijam aplikaciju nailaze problemi) kako da postavim Tracking na klizace DBGrid-a? Kada skrolujem DBGrid skrolovanje radi tek onda kada pustim klizac. Potrebno je ukljuciti tracking ali ove opcije nema nigde u Propertiju DBGrida kao sto je imaju, recimo, klizaci formi (Tracking: true/false).
???
[ savkic @ 28.09.2006. 07:59 ] @
> E sad mi treba jos ovo: (sta cu dok razvijam aplikaciju nailaze problemi) kako
> da postavim Tracking na klizace DBGrid-a? Kada skrolujem DBGrid skrolovanje
> radi tek onda kada pustim klizac. Potrebno je ukljuciti tracking ali ove opcije nema
Moraćeš sam da uradiš scroll, handluj WM_VSCROLL i prati SB_THUMBTRACK događaj.
[ fusion3 @ 28.09.2006. 15:59 ] @
Citat: savkic:
Moraćeš sam da uradiš scroll, handluj WM_VSCROLL i prati SB_THUMBTRACK događaj.
Savkic, može li to malo konkretnije i gde treba da pisem taj kod?
[ savkic @ 29.09.2006. 08:41 ] @
> Savkic, može li to malo konkretnije i gde treba da pisem taj kod?
Nemam ovde kod pa ti eventualno mogu poslati popodne. U tvojoj grid kontroli trebas da ubacis message handler za WM_VSCROLL poruku, najbolje ti je da pogledas primere u VCLu kako se handluje ta poruka.
[ fusion3 @ 29.09.2006. 09:33 ] @
Dobro cekacu taj kod. Samo mi je bitno da mi napises gde treba da pisem kod, da li na neki event DBGrid-a ili negde drugde? HVALA!
[ savkic @ 29.09.2006. 10:01 ] @
> Dobro cekacu taj kod. Samo mi je bitno da mi napises gde treba da pisem kod, da li
> na neki event DBGrid-a ili negde drugde? HVALA!
Ubacis u private sekciju, otprilike ovako bi isla deklaracija ali pogledaj u nekoj postojecoj VCL kontroli kako ide tacno sintaksa.
private
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
protected
[ Brkic @ 24.02.2007. 16:55 ] @
Imam problem sa bojenjem kolona-Row, kada ubacim kod koji je savkic postavio slova mi budu ne vidljiva tj pretpostavljam bela,ista kao i pozadina, cim se ne vide.
DefaulDrawing sam stavi na False
kako da resim problem bojenja Row-a ??
[Ovu poruku je menjao Brkic dana 24.02.2007. u 19:03 GMT+1]
[ savkic @ 24.02.2007. 19:04 ] @
> Imam problem sa bojenjem kolona-Row, kada ubacim kod koji je savkic postavio slova mi budu ne vidljiva tj pretpostavljam bela,ista
> kao i pozadina, cim se ne vide. DefaulDrawing sam stavi na False
Nešto ne radiš kako treba, DefaultDrawing može ostati True a ti moraš handlovati OnDrawColumnCell event. Ako ti i dalje ne radi pošalji kod.
[ Brkic @ 24.02.2007. 21:47 ] @
evo radi,moja greska,pogresio sam broj DBGrida-a.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|