无法以编程方式定义TField

时间:2016-01-13 18:04:18

标签: lazarus freepascal

我在定义TmemDataset的字段时遇到了一些问题。 我想使用memDataset和一些文件来保存和操作一个小型个人项目的数据。

这是我用来创建字段的代码snipet:

function createField(fieldName, fieldLabel : String ; fieldType : TFieldType; 
                     group : Integer) : TField;
begin
  Result := TField.Create(nil);
  Result.FieldName := fieldName;
  Result.SetFieldType(fieldType);
  Result.FieldKind := fkData;
  if fieldLabel = '' then
    Result.DisplayLabel := fieldName
  else
    Result.DisplayLabel := fieldLabel;
  result.DataSet := memDataset;

  Result.Tag:= group;

end;    

电话很简单:

createField('FIELDNAME', 'FieldDisplay', ftInteger, 2);

不幸的是,这并没有正确设置字段类型并且之后危及整个数据编辑。我得到ftUnknown字段类型。如何为我的字段设置正确的类型?

我被告知另一种做事方式:

procedure createField(fieldName, fieldLabel : String ;
                      fieldType : TFieldType; group : Integer);
begin
  with memDataset do
  begin
    if fieldType = ftString then
      FieldDefs.Add(fieldName, fieldType, 80, False)
    else
      if fieldType = ftWideString then
        FieldDefs.Add(fieldName, fieldType, 512, False)
      else
        FieldDefs.Add(fieldName, fieldType, 0, False);

    if fieldLabel = '' then
      FieldDefs.Items[FieldCount].DisplayName := fieldName
    else
      FieldDefs.Items[FieldCount].DisplayName := fieldLabel;

// No other way
//    medCharacter.FieldDefs.Items[FieldCount].Tag := group;
  end;        
end;

除了我丢失了一些对我的项目非常重要的信息:字段显示名称,我找到了设置的方法,但我找不到设置标记的方法。

0 个答案:

没有答案