使用代码创建一个kbmMemTable数据表
在程序中,有时表结构可能是未知的,这时就不能事先创建好一个表了,使用如下代码可动态创建一个内存表:
with kbmMemTable1 do
begin
Close;
MasterSource:=nil;
// Define data fields.
with kbmMemTable1.FieldDefs do
begin
Clear;
Add('Period', ftInteger, 0, false);
Add('VALUE', ftInteger, 0, false);
Add('String', ftString, 30, false);
Add('BytesField', ftBytes, 20, false);
Add('Color', ftInteger, 0, false);
Add('Date', ftDate, 0, false);
Add('Bool', ftBoolean, 0, false);
Add('Memo', ftMemo, 0, false);
Add('AutoInc', ftAutoInc,0,false);
Add('Currency',ftCurrency,0,false);
end;
// 定义索引字段
with kbmMemTable1.IndexDefs do
begin
Clear;
Add('Period','PERIOD',[]);
Add('Index1','VALUE',[ixdescending]);
Add('StringIndex','String',[]);
Add('combined','PERIOD;VALUE',[]);
Add('descending','PERIOD',[ixDescending]);
// Add('Index2','Color;Period',[]);
end;
// 创建表
CreateTable;
//显示格式
TCurrencyField(FieldByName('Currency')).DisplayFormat:='$###0.00';
// 设置字段事件.
with FieldByName('BytesField') do
begin
OnSetText:=kbmMemTable1BytesFieldSetText;
OnGetText:=kbmMemTable1BytesFieldGetText;
end;
// 索引及排序
IndexFieldNames := 'VALUE';
end;