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); 但这不起作用.当我点击按钮时,它显示“没有字段’名字’的索引’” 解决方法
这适用于标准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进行排序(如果它尚未按该列排序). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |