ADODataSet.Fields.Add
.......................
.......................这么大方?!不直

解决方案 »

  1.   

    写一个属性编辑器组件并注册即可。
    看一看VCL自己的写法即可。
      

  2.   

    已实现了一个类似的自定义显示功能。思路是1、dbgrid右键---菜单(自定义显示格局、保存当前显示格局、载入默认显示格局)
    2、选择自定义显示格局时,跳出编辑界面,list all field and attributes.
    可编辑当前字段的列宽、列标题、是否显示等。最后将这些保存到相关的表中。表结构脚本如下:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[QueryShowSet]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[QueryShowSet]
    GOCREATE TABLE [dbo].[QueryShowSet] (
    [Iden] [int] IDENTITY (1, 1) NOT NULL ,
    [Form_Caption] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [User_Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Columns_I] [int] NOT NULL ,
    [Field_Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Field_Width] [int] NULL ,
    [Form_Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [DBGrid_Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Columns_Caption] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Enable] [int] NOT NULL 
    ) ON [PRIMARY]
    GO3、载入初始格局就是删除保存的设置记录,show时如果没有取到保存值则跳过载入设置,则格局就是设计时的样子了。4、用鼠标调整列先后及列宽后可直接选择“保存当前显示格局”菜单保存到表中。搞定收工!
    -------------------------------------------------------------
    ★ 拒绝倒分、拒绝散分
    ★ 少灌水,有时实在忍不住灌了水,请贴主不要给分~~~
    ★ 没有解决问题,也请贴主不要给分~~~
    ★ 大家一起努力,让这里的空气更清新
    ★ 从自已做起,支持的进来签个名
    http://www.csdn.net/expert/topic/768/768178.xml?temp=.9930841
    --------------------------------------------------------------
      

  3.   

    没听清楚,所以就瞎猜了,不知道你是不是想要这样的:
    AdoTable1.Fields是一个集合了,写一个循环:
      For i:=0 to AdoTable1.Fields.count-1 do
       begin
          ListBox1.Items.Add(AdoTable1.Fields[i].Name);
       end;写到一个PopupMenu控件中某项子菜单事件中,然后指定某控件的PopupMenu为刚才你写程序的菜单了
      

  4.   

    tygh2000(峰) :
         我想要的正和你说的相反,我是想把字段加到Fields中,也就是在TADODataSet设计时使用fields editor,点右键Add All Fields的功能.
    不知道该怎么做?
      

  5.   

    我不明白你想干什么:
    如果你想要得到DataSet中的所有Field,在程序运行时它们就已经有了(只要Dataset.Active=True),唯一不同的就是Owner不是Form,而是DataSet.
    如果你一定要一组Owner=Form的Fields:
    Dataset.Active:=true;
    Dataset.Active:=false;
    Dataset.Fields.Clear;
    for i := 0 to Dataset.FieldDefs.Count - 1 do
      Dataset.FieldDefs[i].CreateField(Form1);
      

  6.   

    是不是这个
    for i:=0 to adodataset1.FieldCount -1 do
      GroupBox1.Items.Add (adodataset1.fields[i].fieldname);
      

  7.   

    功能不清!
    建议参考Delphi6\Source\Property Editors\DSDesign.pas