Autor Téma: zabarveni hodnoty v DBGridu podle pravidel  (Přečteno 237 krát)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 269
  • Karma: 1
    • Verze Delphi: Delphi 7
zabarveni hodnoty v DBGridu podle pravidel
« kdy: 19-07-2019, 12:19:28 »
Ahoj, je mozno nejak zabarvit policka v DBGridu (kde jsou pouze cisla) , kdyz bude platit pravidlo

Méně než 2 bude políčko oranžové
bude 0 a nebo záporné bude políčko červené


A potom na to následuje otázka, jestli lze filtrovat položky (řádky) kde platí jedna z těchto pravidel

Offline miroB

  • Guru
  • *****
  • Příspěvků: 514
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #1 kdy: 19-07-2019, 14:15:00 »
Pozrel by som pozorne stránku:
http://www.scalabium.com/smdbgrid.htm
Všetko to tam je. A aj kus viac.

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 269
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #2 kdy: 20-07-2019, 15:54:07 »
super...

jeste jak to nainstalovat abych to mohl pouzivat :)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 269
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #3 kdy: 20-07-2019, 16:10:58 »
tak nainstalovano, jeste prijit na to zabarvování

Zkousim to takto

Kód: Delphi [Vybrat]
  1. procedure TForm1.SMDBGrid1DrawColumnCell(Sender: TObject;
  2.   const Rect: TRect; DataCol: Integer; Column: TColumn;
  3.   State: TGridDrawState);
  4. begin
  5.  if ZTable1.FieldByName('sklad').AsInteger<1 then
  6.  SMDBGrid1.Canvas.Font.Color:=clRed;
  7. end;

ale to mi nic neudela i kdyz tam dam zapornou hodnotu

tak uz

Kód: Delphi [Vybrat]
  1. procedure TForm1.SMDBGrid1DrawColumnCell(Sender: TObject;
  2.   const Rect: TRect; DataCol: Integer; Column: TColumn;
  3.   State: TGridDrawState);
  4. begin
  5.  if ZTable1.FieldByName('sklad_znojmo').AsInteger<1 then
  6.  SMDBGrid1.Canvas.Font.Color:=clRed;
  7.  SMDBGrid1.DefaultDrawColumnCell
  8.  (Rect, DataCol, Column, State);
  9. end;
  10.  


Ještě teda jedna věc a to vyhledat všechny položky který jsou zabarvený do červena a nebo mají hodnotu mensí jak 1
« Poslední změna: 20-07-2019, 16:41:25 od Kony »

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 269
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #4 kdy: 20-07-2019, 16:56:24 »
Tak to bych taky uz mel

Kód: Delphi [Vybrat]
  1. procedure TForm1.ZTable1FilterRecord(DataSet: TDataSet;
  2.   var Accept: Boolean);
  3. var
  4.   Value: Integer;
  5. begin
  6.   Value:=ZTable1['sklad_znojmo'];
  7.   Accept:=Value<2;
  8. end;

A potom na tlačítku

Kód: Delphi [Vybrat]
  1. procedure TForm1.Button10Click(Sender: TObject);
  2. begin
  3.   ZTable1.Filtered:=True;
  4. end;

Ale jak mam potom udelat, kdyz chci na tom Table pouzit vic filtru, takto mu urcim ten filter a jen pustim, ale co kdyz tam chci pouzit na druhym tlacitku hodnotu <20...... to bych musel udelat druhy filtr, ale jak prosim na to ?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #5 kdy: 20-07-2019, 17:08:56 »
Napríklad "2" definovať ako premennú formulára.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 269
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #6 kdy: 20-07-2019, 22:47:10 »
no ale co kdyz potrebuji pouzivat ruzny flltry

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:zabarveni hodnoty v DBGridu podle pravidel
« Odpověď #7 kdy: 20-07-2019, 22:59:01 »
Tak si ich zostav do jedného boolean výrazu. Napr: Value>2 and Value <20; Jednoducho namiesto premennej použiješ funkciu. S tou si už musíš poradiť sám ;)
Nechce sa mi veriť, aby Ti niečo také jednoduché/základné neprišlo na um :o
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.