[Delphi] Kolomtitel bij een TDBGrid

Pagina: 1
Acties:

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 22:12
Ik zit al tijdenlag te puzzelen hoe ik in een onDrawColumnCell de titel van de kolom kan benaderen, maar de onderlinge structuur vanaf de datagrid naar de kolomtitel is me niet duidelijk. Ik kom nu op het volgende om te controleren of de titel 'TEST' is. Maar zelfs deze wazige constructie werkt niet. :(

Delphi:
1
2
3
4
5
6
procedure TForm1.TestDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if TColumn((Sender as TDBGrid).Columns.Items[Datacol]).Title.Caption,1,2='TEST' then
  <Teken wat wazigs>
end;


Wie weet wat het juiste pad is. In google zijn alleen voorbeelden te vinden om onDrawColumnCell te gebruiken.

  • VinnieM
  • Registratie: September 1999
  • Laatst online: 29-11-2024
Dit kun je doen door persistent kolommen toe te voegen aan de TDBGrid. Doe dit door te dubbelklikken op de DBGrid in de designer en dan kolommen toe te voegen. Je kunt dan bij de object explorer de title aanpassen. Nadeel is alleen dat je dan wel alle kolommen toe moet voegen, anders zie je ze niet meer in het grid.
Andere mogelijkheid is door een AS te gebruiken in de SQL van de dataset die achter het grid hangt. Hier kun je echter geen spaties gebruiken in de naam, terwijl dit wel kan in de persistent kolommen.

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 22:12
Ik gebruik nu ook persistent kolommen. Van elke kolom heb ik de Title.Caption gevuld. En nu wil ik dus in de onDrawColumnCell-event reageren op de naam van de kolom.

Mijn doel is om een afgeleide te maken van TDbGrid of TCustomDataGrid en een afgeleide van TColumn om dan in de TColumn format-opties mee te kunnen geven die dus kolom-afhankelijk zijn.

  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Vergeet heel het grid. Besteed hier geen tijd aan, maar neem een 3rd party component die het al voor je uitgevogeld heeft.

Misschien niet geheel on-topic, maar je bespaart je een hoop ergernis.

Kijk een op ww.torry.net voor gratis alternatieven.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En het is mij nu niet duidelijk of je nog een vraag hebt en wat die vraag dan is.

We adore chaos because we like to restore order - M.C. Escher


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 22:12
LordLarry schreef op vrijdag 02 december 2005 @ 11:53:
En het is mij nu niet duidelijk of je nog een vraag hebt en wat die vraag dan is.
Ik heb nog steeds een vraag... kort samengevat..

Hoe kan ik vanuit het onDrawCellColumn-event de caption-property van de kolom benaderen?

Dus bijv. controleren of deze de inhoud TEST bevat?

Delphi:
1
2
3
4
5
6
procedure TForm1.TestDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if TColumn((Sender as TDBGrid).Columns.Items[Datacol]).Title.Caption='TEST' then
  <Teken wat wazigs>
end;

[ Voor 3% gewijzigd door jvdmeer op 02-12-2005 19:43 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En je hebt je eigen vraag beantwoord en weet nog niet wat het antwoord is? :)

We adore chaos because we like to restore order - M.C. Escher


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 22:12
LordLarry schreef op zaterdag 03 december 2005 @ 10:27:
En je hebt je eigen vraag beantwoord en weet nog niet wat het antwoord is? :)
Ik weet inmiddels het antwoord. Ik zat veel te moeilijk te denken.
Delphi:
1
TColumn((Sender as TDBGrid).Columns.Items[Datacol]).Title.Caption

was veel te moeilijk, het was nl.:
Delphi:
1
Column.Title.Caption


Zo simpel, en toch zo tijdrovend. En nee, ik ga geen alternatief component zoeken. Maar ben bezig met mijn eigen TDBgrid.
Pagina: 1