急!如何在table.FieldDefs中添加property!求大家。(200分)

  • 主题发起人 主题发起人 狸猫
  • 开始时间 开始时间

狸猫

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在table.FieldDefs中添加property。
我想添加如下 table.FieldDefs[0].MaxValue。
添加一个 MaxValue : String的属性。
我试过修改的VCL的DB中的TFieldDefs类。
但是运行时出错。
 
把你修改的部份贴出来看看。
应该可以加上的。
 
我在DB.pas的TFieldDefs中加上了两句
private
FMaxValue : String; //first
published
property MaxValue : String read FMaxValue write FMaxValue; //second
然后创建一个新project,把修改的DB.pas添加入工程,Build ALL.将编译了的
DB.dcu放到LIB中。会不会是我编译方法不对呢?
 
我的目的是希望将Field中的一些属性,用Table进行记录下来。
例如最大值,最小值。
 
用计算字段不行吗?
双击你的Table控件,在弹出的窗口按右键,“New Field。。。”
 
我不是要增加一个Field而是想增加一个属性。在Field Editor中手动添加Field
的同时在Form中也添加了一个Component,例如加一个Field : Name <String>,那么在
Form中也同时声明一个Component Table1Name : TStringField.而TStringField中有
诸如EditMask等属性。但是我希望能有多几个属性,而且可以动态创建。TStringField
是继承TField的。
我现在有两个问题:
1.如何动态在TABLE内添加Field,好像手动操作Field Editor一样。
2.我尝试修改TField类,但是出错。
 
你是想增加一个数据类型呢,还是要的所有的数据类型上都增加这个属性?
 
whf大哥,我是想在数据类型上增加这个属性。
 
在所有的数据类型上都增加一个属性不清楚,下面这个例子是增加一个数据类型。
unit myField;

interface

uses
Classes,Graphics,Db;

type
TmyField = class(TIntegerField)
private
FMaxValue: Integer;
protected
public
published
property MaxValue: Integer read FMaxValue write FMaxValue;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterFields([TmyField]);
end;

end.
 
动态新增一个字段可以用这样的方法
var
yourfield:tstringfield(也可以是其他类型如tfloatfield)
begin
yourfield.FieldName:='your fieldname';
yourfield.Name:='your field name';
yourfield.FieldKind:=fkdata;(or fkcalculated(计算字段))
yourfield.Size:=xx;
yourfield.DataSet:=adoquery;
这样就可以动态创建一个字段.
 
你应该修改TFieldDef啊,不应该是TFieldDefs的
 
后退
顶部