begin
...
 Query2.Open;
 Query2.FieldByname(youfieldname).DISPLAYLABEL:=youname;
...
end;

解决方案 »

  1.   

    Query1.Fields[i].DisplayLabel:='abc';
    Query1.Fields[i].DisplayWidth:=10;
      

  2.   

    因为我不知道用什么方法动态地实现:QUERY2在显示字段个数改变时,设置DISPLAYLABEL。请朋友们帮忙。 
      

  3.   

      下面是相关部分代码,我想该说明的都说了, 请朋友们帮忙!!!
       Query1.Close;
       Query1.SQL.Clear;
       Query1.SQL.add(q_temp.sql.gettext);
       query1.open;
       for j:=low(aa) to high(aa) do
       for k := 0 to ComponentCount -1 do
        if components[k] is Tedit then
         if pos('OOO',(components[k] as Tedit).name) <> 0 then
          if strToInt(copy((components[k] as Tedit).name,4,2)) = j   then
            begin
              aa[j]:=(components[k] as Tedit).text;
              Query1.fieldbyname(trim(copy((components[k] as Tedit).name,9,20))).Displaylabel:=aa[j];
            end;
      

  4.   

      Help me !!!  I wait you answer.
             Help me !!!  I wait you answer.
                    Help me !!!  I wait you answer.
                        Help me !!!  I wait you answer.
                              Help me !!!  I wait you answer.
                                   Help me !!!  I wait you answer.
                                       Help me !!!  I wait you answer.
                                               Help me !!!  I wait you answer.
      

  5.   


         我的EMAIL是:[email protected] 我相信朋友们能帮我解决难题
      

  6.   

    I'm Sorry I Don't know 
      

  7.   

    我看你的代码没有什么问题啊,你把代码里的Query1换成Query2不就行了吗(当然需要保证edit的name和Query2的字段能够对应上),能再详细说明一下你碰到的问题吗?
      

  8.   

    再说明一下:Query1与Query2 只是为了调用方便,问题不在这里,当然我用一个Query1也可以,只要把代码中的q_temp.sql.gettext直接用SQL描述就行了,我的问题出在用一个Query转换不同的表时,因字段个数不一样,设置DISPLAYLABEL时,Query中的DISPLAYLABEL还维持在原来状态,也就是说,Query中的DISPLAYLABEL还对应着上一张表里的字段,有什么办法可以清空、刷新、并重新赋值。
      

  9.   

    Help me !!!  I wait you answer.  
      

  10.   

    你用
    query.close;
    query.sql.clear;
    ...
    ...
    尝试过?难道不能删除原来的东东?
    实在不行,就动态建立和撤消query控件。
      

  11.   

        试过,query1的fieldcount如原来是11,加入新的SQL后,fieldcount 应是18 ,而结果是11,这样 displaylabel 只能赋到第11个字段,以后就出现 out of index....
    我想应该有解决的办法。 
      

  12.   

    我用如下程序试了一下,两次FieldCount并不相同,没有出现你所说的情况(我在delphi5下):
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Query1.Active := false;
      Query1.SQL.Clear;
      Query1.Sql.Add('Select * from animals.dbf');
      Query1.Open;
      Edit1.Text := Format( '%d', [query1.FieldCount] );
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Query1.Active := false;
      Query1.SQL.Clear;
      Query1.Sql.Add('Select * from clients.dbf');
      Query1.Open;
      Edit1.Text := Format( '%d', [query1.FieldCount] );
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Query1.Active := false;
      Query1.SQL.Clear;
      Query1.Sql.Add('Select * from animals.dbf');
      Query1.Open;
      Edit1.Text := Format( '%d', [query1.FieldCount] );
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Query1.Active := false;
      Query1.SQL.Clear;
      Query1.Sql.Add('Select * from clients.dbf');
      Query1.Open;
      Edit1.Text := Format( '%d', [query1.FieldCount] );
    end;另,如果你实在没办法,则在程序中动态创建、删除query2,这样总没问题了吧,如:Query2.Free;
    Query2 := TQuery.Create(self);
    //然后,初始化query2...
      

  13.   

    另,有没试过Query2.FieldDefs.Items.Clear或Query2.Fields.Clear