加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用内存表对网格进行排序

发布时间:2020-12-15 09:27:22 所属栏目:大数据 来源:网络整理
导读:我想对网格进行排序.我创建了一个内存表,并将其作为数据源链接到网格.我将数据从nxQuery对象插入到内存表中.对于排序,我必须将索引添加到内存表中. 这是创建事件形式的索引添加和插入部分 nxMemTable1.IndexDefs.Clear;nxMemTable1.FieldDefs.Clear;nxMemTab
我想对网格进行排序.我创建了一个内存表,并将其作为数据源链接到网格.我将数据从nxQuery对象插入到内存表中.对于排序,我必须将索引添加到内存表中.

这是创建事件形式的索引添加和插入部分

nxMemTable1.IndexDefs.Clear;
nxMemTable1.FieldDefs.Clear;

nxMemTable1.FieldDefs.Add('packpatientid',ftInteger,False);
nxMemTable1.FieldDefs.Add('firstname',ftString,10,False);
nxMemTable1.FieldDefs.Add('lastname',False);
while not nxQuery1.EOF do
begin
  nxMemTable1.Append;
  nxMemTable1.FieldByName('packpatientid').AsInteger :=   nxQuery1packpatientid.AsInteger;
  nxMemTable1.FieldByName('firstname').AsString := nxQuery1firstname.AsString;
  nxMemTable1.FieldByName('lastname').AsString := nxQuery1lastname.AsString;
  nxMemTable1.Post;
end;

这是我试图对内存表进行排序的代码

程序TForm1.Button2Click(发件人:TObject);
开始
??nxMemTable1.IndexFieldNames:=’firstname’;
结束;

但这不起作用.当我点击按钮时,它显示“没有字段’名字’的索引’”

解决方法

这适用于标准TClientDataSet.

我创建了一个新的VCL Forms项目,在表单上删除了一个TClientDataSet,并在代码中将其命名为CDS.然后我添加了一个TDataSource,为其DataSet属性分配了CDS,添加了一个TDBGrid,并将DataSet1指定为其DataSource.然后我创建了两个事件处理程序,一个用于Form1.OnCreate事件,另一个用于DBGrid1. OnTitleClick事件.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  sField: string;
begin
  sField := Column.FieldName;
  if sField <> CDS.IndexFieldNames then
    CDS.IndexFieldNames := sField;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CDS.FieldDefs.Add('LastName',30);
  CDS.FieldDefs.Add('FirstName',30);
  CDS.FieldDefs.Add('ID',ftInteger);
  CDS.CreateDataSet;
  CDS.AppendRecord(['Smith','John',3]);
  CDS.AppendRecord(['Doe','Jane',1]);
  CDS.AppendRecord(['Adams','Quincy',2]);
  CDS.IndexFieldNames := 'LastName';
end;

运行应用程序并单击任何列标题会立即按该列对DBGrid进行排序(如果它尚未按该列排序).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读