Jump to content

Recommended Posts

Posted

Hi Farshad,

please insert a DBgrid.ColumnByname or similar (ByFieldname).

I need to show or hide some columns at runtime, but only Idx is limited and difficult if visible column's number can be dynamic. 

Thanks in advance,

Stefano 

  • 4 months later...
Posted
procedure TUniMainModule.ColumnVisible(Grid:TUniDBGrid;FieldName:String;visible:boolean);

var i:integer;

begin

   for I := 0 to grid.Columns.Count do

     begin

       if grid.Columns.FieldName=FieldName then

           begin

            grid.Columns.Visible :=Visible;

            break;

           end;

     end;

end;

 

 

use:

 

unimainmodule.ColumnVisible(grid1,'column',true);

  • Upvote 1
Posted

Hello,

 

Line 4:

 
for I := 0 to grid.Columns.Count-1 do
 
Should be "grid.Columns.Count-1" not "grid.Columns.Count."
 
Please correct me if I am wrong.
Posted

You can easily extend the TuniDBGrid class as such and create your own component:

TMyUniDBGrid = class(TUniDBGrid)
public
  function ColumnByName(const pColumnName: string): TUniBaseDBGridColumn;
end;

function TMyUniDBGrid.ColumnByName(const pColumnName: string): TUniBaseDBGridColumn;
var i: integer;

begin
  for i := 0 to Columns.Count-1 do
  begin
    if Columns[i].FieldName = pColumnName then
    begin
      Result := Columns[i];
      Break;
    end;
  end;
  if (Result = nil) then
    raise Exception.Create('Column "' + pColumnName + '" does not exist!');
end;
Posted

Even better:

TUniDBGridHelper = class helper for TUniDBGrid
public
  function ColumnByName(const pColumnName: string): TUniBaseDBGridColumn;
end;

function TUniDBGridHelper.ColumnByName(const pColumnName: string): TUniBaseDBGridColumn;
var i: integer;
begin
  for i := 0 to Columns.Count-1 do
  begin
    if Columns[i].FieldName = pColumnName then
    begin
      Result := Columns[i];
      Break;
    end;
  end;
  if (Result = nil) then
    raise Exception.Create('Column "' + pColumnName + '" does not exist!');
end;
  • Upvote 1
×
×
  • Create New...