Come posso accedere a una colonna TDBGrid per nome anziché per indice?Come posso accedere a una colonna TDBGrid per nome anziché per indice?
Per esempio, ora uso:
grdInvoiceItems.Columns[2].Visible := False;
ma sarebbe molto meglio scrivere qualcosa di simile:
grdInvoiceItems.Columns['UnitPrice'].Visible := False;
Nel frattempo io uso una per il ciclo come in:
for idx := 0 to grdInvoiceItems.Columns.Count - 1 do
begin
if (
(grdInvoiceItems.Columns[idx].FieldName = 'UnitPrice') or
(grdInvoiceItems.Columns[idx].FieldName = 'Discount') or
(grdInvoiceItems.Columns[idx].FieldName = 'SecretCode')
) then
grdInvoiceItems.Columns[idx].Visible := False;
end;
L'utilizzo del nome colum è IMO molto meglio indice di colonna tham poiché l'indice è soggetto a modifiche più spesso del nome.
Qualche idea su come incapsularlo meglio?
Possibile duplicato di [Ottieni oggetto colonna per campo DataSet] (http://stackoverflow.com/questions/31310442/get-column-object-for-dataset-field) –
A seconda di come vengono create le colonne, è possibile usa direttamente il campo dietro la colonna per renderlo visibile o meno. Date un'occhiata a http://stackoverflow.com/questions/24527027/proper-way-to-hide-show-columns-on-dbgrid – RBA