有人能附段代码吗动态生成列 在DBGRIDEH什么事件下写

解决方案 »

  1.   

    读取数据表,然后生成列可以不?
    //加载dbgrd
    procedure DbgrdCreate(const AQry:TADOQuery;const ADbgrd:TDBGridEh;
                       const ATableName:string;const STFilter:Boolean;
                       const ADataSource:TDataSource);
    var
      I:Integer;
      ConnectMode : string;
    begin
      readConnectMode(ConnectMode);  with AQry do
      begin
        //查询字段名前清空上次的查询
        Close;
        SQL.Clear ;
        SQL.Add('select * from FieldShow where TableName = '+
                ''''+ATableName+''''+' order by ShowID ');
        Open ;
        I := AQry.RecordCount;
        
        ADbgrd.Columns.Clear;
        while I > 0 do
        begin
          ADbgrd.Columns.Add;
          I := I-1;
        end;    I := 0;
        //穷举数据条目,执行添加语句
        while not Eof do
        begin
          with ADbgrd.Columns do
          begin
            //从数据表FieldShow中决定DBGird的所有列属性
            Items[I].Visible := FieldByName('Show').AsBoolean ;
            Items[I].Title.Caption := FieldByName('Name').AsString ;
            Items[I].FieldName := FieldByName('field').AsString ;
            Items[I].Width := FieldByName('width').AsInteger;
            if FieldByName('DotSize').AsInteger = 2 then
            begin
              Items[I].DisplayFormat := '0.00';
            end;
            if FieldByName('ShowButton').AsInteger = 1 then
            begin
              Items[I].AlwaysShowEditButton := True;
              Items[I].ButtonStyle := cbsEllipsis ;
            end;
            if STFilter = True then
            begin
              Items[I].STFilter.ListSource := ADataSource;
              Items[I].STFilter.ListField := FieldByName('field').AsString;
            end; 
          end;
          I := I + 1 ;     // ADbgrd.Columns.Count-1  可供改进算法的计数参数Count
          //往下添加
          Next;
        end;
      end;
      //刷新表
      ADbgrd.DataSource := ADataSource;
    //  ADataSource.DataSet.Active := False;
    //  ADataSource.DataSet.Active := True;
    end;
      

  2.   

    于DbGrid一样
    直接Columns.Add; 就行啊
      

  3.   


    顶,不要把简单的问题复杂化,在FORMCreate里可以先初始化你的DBGRIDEH
      

  4.   

    SQL语句可以指明列
    但我不需要这种的我需要的是有2个字段  一个颜色  一个尺码我在程序复选框里勾上尺码  就会在DBGRIDEH后面增加个字段尺码 而且 还要以这类格式  
    10|20|30
    40|50|60
    70|80|90
      |  |然后我点一下  他就会变化  20|30|10
    40|90|60
    70|80|50
      |  |扩展统计吧不知道你们明不明白 我烦了几天的问题 我在做报表
      

  5.   

    比较简单,Columns.add
    后再设置相关的参数,比如说字段名,宽度等等
    再帮你顶顶
      

  6.   

    既然Columns.add不能用, 那就在你的QUERY里增加一个计算字段,自己加记录进去