Toon posts:

[Delphi] In TDBGrid textkleur per rij aanpassen, hoe? *

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoe kun je in een DBGrid de kleur van de tekst van een bepaalde rij/veld laten veranderen aan de hand van de waarde in het veld/de rij? Hoe spreek je dat aan? ik kan het niet vinden in de property's en methodes van DBGrid.

[ Voor 7% gewijzigd door Verwijderd op 07-08-2003 12:30 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Zoek eens bij OnCustomDraw of OnDrawCell event of zoiets, daar kun je het op het moment van painten mee regelen.

In topictitle trouwens graag de taal in square brackets plaatsen, fix0red

Professionele website nodig?


Verwijderd

Topicstarter
In topictitle trouwens graag de taal in square brackets plaatsen, fix0red
sorry, wist ik niet.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 07:56

alienfruit

the alien you never expected

cury684 je bent vergeten het * in de topictitle te zetten :)

Echnie ;)

[ Voor 18% gewijzigd door curry684 op 07-08-2003 12:35 ]


Verwijderd

Topicstarter
Zoek eens bij OnCustomDraw of OnDrawCell event of zoiets, daar kun je het op het moment van painten mee regelen
Ik ga eens kijken bedankt voor de tip.

[ Voor 68% gewijzigd door Verwijderd op 07-08-2003 12:39 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

* achter topictitle = gewijzigd door moderator. Graag nu verder ontopic voordat ik deze hele slowchat ga trashen ;)

Professionele website nodig?


  • TSS_Droopy
  • Registratie: Februari 2002
  • Laatst online: 12-06 16:44
Ik gebruik niet de standaard grid maar quantumgrid v3 van Devexpress.

Daar gebruik ik de "OnCustomDrawCell" event om te kijken om mijn regel een andere kleur moet krijgen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TfrmOverzicht.dxDBGrid1CustomDrawCell(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
  AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
  var AText: String; var AColor: TColor; AFont: TFont;
  var AAlignment: TAlignment; var ADone: Boolean);
var Value : Variant;
begin
  Value := ANode.Values[dxdbGrid1Days2Verjaardag.Index];
  try
    if ((Value <=7) and (ANode.Values[dxDBGrid1Geboortedatum.Index] > 0)) then
      AColor := clrBinnenWeekJarig;
    if ((Value >7) and (Value <=14)) then
      AColor := clrBinnen2WekenJarig;
  except
    on EVariantError do; // the Value can be Null
  end;

end;


Misschien is dit een oplossing voor je.

P.S. Bovenstaande functie kleurt alle contactpersonen in mijn lijst die binnen 1 of 2 weken jarig zijn

"I see said the blind man, as he picked up his hammer and saw"


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

DevExpress componenten zijn extreem rijk in alle customdraw-events, volgens mij hebben de standaard VCL-componenten geen OnCustomDrawCell of OnAdvancedCustomDrawItem etc. Met een reguliere OnCustomDraw is het echter ook te doen, alleen iets meer werk :)

Professionele website nodig?


Verwijderd

Topicstarter
Ik gebruik niet de standaard grid maar quantumgrid v3 van Devexpress.
Is dat freeware? Nee dus, dan vind ik het geen optie. Is er niemand die me op weg kan helpen met de standaard functies van Delphi (versie 7)?

if DBGProdukten.Fields[5].AsInteger < 0 then DBGProdukten.Columns[5]. := clred;

Als ik het bovenstaande invoer in de event "DBGridDrawColumnCell" dan is het zo dat wanneer 1 waarde in de hele kolom < 0 is de hele kolom rood wordt, maar hoe benader ik dan de cell op zich?

[ Voor 66% gewijzigd door Verwijderd op 07-08-2003 14:03 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Je had bijvoorbeeld even www.devexpress.com in kunnen tikken om erachter te komen dat het nogal dure commerciele componenten zijn... :Z

Professionele website nodig?


Verwijderd

Verwijderd schreef op 07 augustus 2003 @ 13:16:
if DBGProdukten.Fields[5].AsInteger < 0 then DBGProdukten.Columns[5]. := clred;

Als ik het bovenstaande invoer in de event "DBGridDrawColumnCell" dan is het zo dat wanneer 1 waarde in de hele kolom < 0 is de hele kolom rood wordt, maar hoe benader ik dan de cell op zich?
In het OnDrawColumnCell event krijg je ook een Rect mee. Dat is de cell die je wilt benaderen.
Via...
Delphi:
1
2
DBGProdukten.Canvas.Brush.Color := clRed;
DBGProdukten.Canvas.FillRect(Rect);
...kun je die cell een mooi kleurtje geven.
Daarna nog wel even met TextRect (of een directere Windows call als DrawText) even de tekst in die cell zetten die je erin wilt hebben, want het OnDrawColumnCell event treedt op nadat het DBGrid z'n cells getekend heeft (wanneer DefaultDrawing True is).
Om bij de weer te geven waarde te komen heeft de Column parameter een erg handige Field property. :)
Pagina: 1