[ MatezYU @ 24.11.2006. 06:06 ] @
Kako mogu da citam podatke iz DBGrid-a?
Recimo da ako imam u prvoj koloni vrednost "D" onda da mi taj red bude obojen u crveno a ako je "N" onda da mi je obojen u zeleno?
Isto tako zeleo bih taj red koji je selektovan, da pritiskom na jedno dugme mogu iscitati njegove vrednosti..
Kako mogu saznati koji je redni broj tog reda kojeg sam selektovao?
Hvala
[ badam @ 24.11.2006. 06:36 ] @
poceo sam da ti odgovaram na pitanje, pa sam neleteo na

http://www.elitesecurity.org/t181123-0#1176400

i na

http://www.elitesecurity.org/t181122-0#1176399

stvarno neozbiljno.
[ MatezYU @ 24.11.2006. 06:43 ] @
if absquery1.FieldValues['OTPUSTEN'] = 'D'
then dbgrid1.canvas.brush.Color := clSilver
else dbgrid1.canvas.brush.Color := clWhite;

dbgrid1.Canvas.Font.Color:=clblack;
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

Dobro, ovako sam resio.. Ali problem je sto kada selektujem misem jedan red ne oznaci mi se plavom bojom taj red kao da je oznacen? Zasto?
[ dogriz @ 24.11.2006. 07:23 ] @
Citat:
Dobro, ovako sam resio.. Ali problem je sto kada selektujem misem jedan red ne oznaci mi se plavom bojom taj red kao da je oznacen? Zasto?


?????
[ badam @ 24.11.2006. 08:04 ] @
Code:

if not (gdSelected in State) then
begin
  if absquery1.FieldValues['OTPUSTEN'] = 'D' then 
    dbgrid1.canvas.brush.Color := clSilver
  else 
    dbgrid1.canvas.brush.Color := clWhite;
  dbgrid1.Canvas.Font.Color:=clblack
end;
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);


za citanje vrednosti je objasnjeno na drugom linku iz prethodnog posta: citaj iz dataseta - uvek su dbgrid i dataset sa kojim je povezan pozicionirani na istom recordu
i o rednom broju je bilo reci. Dobijas ga sa:
DataSet.RecNo

[Ovu poruku je menjao badam dana 24.11.2006. u 09:36 GMT+1]
[ MatezYU @ 30.11.2006. 10:27 ] @
Ofarbaju mi se redovi u Dbgridu po zatatom uslovu ali muci me to da kada kliknem misem na jedan red, nece da poplavi ta linija.. Ono kao da je selektovano. Selektovano je, medjutim samo je uokvireno sivom bojom polje a nije onako ofarbano u plavo.. Kako to da resim da se jasno vidi da je nesto selektovano?
[ savkic @ 30.11.2006. 11:28 ] @
> jedan red, nece da poplavi ta linija.. Ono kao da je selektovano. Selektovano je,
> medjutim samo je uokvireno sivom bojom polje a nije onako ofarbano u plavo..

Ne mogu sada da probam ali koliko se sećam jedan od mogućih vrednosti za State je gdFocused (ili slično), koji kaže da je slog ili polje trenutno aktivno. Samo treba da handluješ i taj slučaj pa da uradiš farbanje kako ti odovara.
[ dogriz @ 30.11.2006. 11:28 ] @
Probaj ovo da dodaš u OnDrawColumnCell:

Code:

  if gdSelected in State then
    begin
      DBGrid1.Canvas.Brush.Color:=clBlue;
      DBGrid1.Canvas.Font.Color:=clWhite;
    end;

[ MatezYU @ 30.11.2006. 12:03 ] @
To je to! Proradilo je... Hvala!
[ badam @ 30.11.2006. 12:10 ] @
@savkic: gdFocused se odnosi na input fokus, tako da nece raditi sa celim redom. Matez pominje red, pa sam zato stavio gdSelected.

ono sto sam pre postovao kod mene radi. potrebno je samo u options od dbgrida staviti dgRowSelect i dgAllwaysShowSelection na True
[ savkic @ 30.11.2006. 14:28 ] @
> @savkic: gdFocused se odnosi na input fokus, tako da nece raditi sa celim redom. Matez pominje red, pa sam zato stavio gdSelected.

Problem je ako se selektuje više slogova, zato sam išao na focus jer mi se čini da DBGrid podržava multi select.
[ Miloš Baić @ 30.11.2006. 15:20 ] @
Citat:
savkic:Problem je ako se selektuje više slogova, zato sam išao na focus jer mi se čini da DBGrid podržava multi select.

Da, u okviru TDBGrid -a postoji property MultiSelect i treba jednostavno vrednost postaviti na True.
[ badam @ 30.11.2006. 18:54 ] @
bas zbog multi selecta bi i trebalo gdSelected. ako se koristi gdFocused, onda (iako je ukljuceno dgRowSelect) ostaje prikazan plavim samo jedan cell, a ne ceo red. mrzi me da proveravam sta bi bilo pri multi selectu, ali mislim da bi gdFocused opet dao samo jedan cell (onaj koji ima input fokus), a gdSelected bi dao svaki selektovan red.
[ chips @ 05.12.2006. 00:30 ] @
Ako je to ovo?
Code:

procedure TForm1.VolgaDBGrid2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TVolgaColumn;
  State: TGridDrawState);
 begin
 VolgaDBGrid2.Options:=[dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,
dgConfirmDelete,dgCancelOnExit,dgEnterToTab,dgMultiSelect];
  if (gdSelected in State) then
     begin
         VolgaDBGrid2.Canvas.Font.Color := rgb(250,250,200);
         VolgaDBGrid2.Canvas.Font.Style := [fsBold];
         VolgaDBGrid2.Canvas.Brush.Color := rgb(80,110,160);
         VolgaDBGrid2.Canvas.FillRect(Rect);
         VolgaDBGrid2.Canvas.TextOut(Rect.Left,Rect.Top,Column.Field.AsString);
     end;
end;


Ja sam koristio Volga komponentu jer ima prelazak sa ENTER sa ćelije na ćeliju isto kao i sa TAB.

Znači ceo red mi se označi po HighLightColor i HighLightTextColor iz ObjectInspectora,
a svaka ternutno fokusirana ćelija ima bela bold slova i boju iz gore priloženog.

@badem

E sad, ovde sam zapeo

Citat:


citaj iz dataseta - uvek su dbgrid i dataset sa kojim je povezan pozicionirani na istom recordu
i o rednom broju je bilo reci. Dobijas ga sa:
DataSet.RecNo



Kada kliknem samo na pozicioner ili pomerim scroll-om, Multiselect dobija tačku a trenutni red crni trouglić,
a ja zelim da selektovani pozicioner dobije i multi select.
Jasno mi je da će DataSet.RecNo dobiti vrednost selektovanog reda, ali kako da to primenim u DrawColumnCell???