对一个DBGRID进行排序,按TITLECLICK时进行升降序,
procedure Tfrmpersondb_parent.RZdbmainTitleClick(Column: TColumn);
var titlecaption:string;i:integer;
begin
if (not qrymain.Active) or (qrymain.RecordCount = 0) then exit;
if Column.Grid.DataSource.DataSet.FieldByName(column.FieldName).DataType=ftmemo then exit;
titlecaption:=column.Title.Caption;
if pos('▼',titlecaption)<>0 then
column.Title.Caption:=copy(titlecaption,1,length(titlecaption)-2)
else
if pos('▲',titlecaption)<>0 then
column.Title.Caption:=copy(titlecaption,1,length(titlecaption)-2)+'▼'
else
column.Title.Caption:=column.Title.Caption +'▲';
for i:=0 to RZdbmain.Columns.Count-1 do
begin
if pos('▼',column.Title.Caption)<>0 then
qrymain.Sort :=column.fieldname + ' DESC'
else
if pos('▲',column.Title.Caption)<>0 then
qrymain.Sort :=column.fieldname + ' ASC'
else
//这里应怎么写,就是不升序不降序,还原来查询出来的记录顺序.
end;
end;
还有发现在一个问题就是当我选择了一条记录之后,按TITLEclick,进行升序的话,指针永远会指向第一条,我想要的要求是当选择第一条记录之后,不管升序了还是降序了,指针一直指向该条记录,请问如何实现?谢谢!!`
procedure Tfrmpersondb_parent.RZdbmainTitleClick(Column: TColumn);
var titlecaption:string;i:integer;
begin
if (not qrymain.Active) or (qrymain.RecordCount = 0) then exit;
if Column.Grid.DataSource.DataSet.FieldByName(column.FieldName).DataType=ftmemo then exit;
titlecaption:=column.Title.Caption;
if pos('▼',titlecaption)<>0 then
column.Title.Caption:=copy(titlecaption,1,length(titlecaption)-2)
else
if pos('▲',titlecaption)<>0 then
column.Title.Caption:=copy(titlecaption,1,length(titlecaption)-2)+'▼'
else
column.Title.Caption:=column.Title.Caption +'▲';
for i:=0 to RZdbmain.Columns.Count-1 do
begin
if pos('▼',column.Title.Caption)<>0 then
qrymain.Sort :=column.fieldname + ' DESC'
else
if pos('▲',column.Title.Caption)<>0 then
qrymain.Sort :=column.fieldname + ' ASC'
else
//这里应怎么写,就是不升序不降序,还原来查询出来的记录顺序.
end;
end;
还有发现在一个问题就是当我选择了一条记录之后,按TITLEclick,进行升序的话,指针永远会指向第一条,我想要的要求是当选择第一条记录之后,不管升序了还是降序了,指针一直指向该条记录,请问如何实现?谢谢!!`
解决方案 »
- 在新继承的 TDBCtrlGrid 类里怎么覆盖基类的OnPaintPanel 属性
- 如何让一个Groupbox获得焦点的时候,在窗口的上边显示?请进!急!
- 用户delphi编写程序控制word与PowerPoint
- 如何取出xml中的某几条数据,进行操作??
- 带DB的带Label的TDateTimePicker源代码公开,非让你给我开贴子不可。嘻嘻!
- 高手救命阿,谁知道DELPHI里的EOleException是怎么使用的?
- Query can run error ,why?
- 请教各位!如何在程序中调出修改系统时间的窗体!!(就是双击右下脚‘时间’时出现的窗体)!谢谢各位帮忙!!
- 用delphi建corba
- 远程连接数据库问题
- 哪里有组件开发的书籍下载
- res编译成dll后,如何在程序中调用
对于这个问题我是这样解决的:查询之前,先记下当前记录唯一标识(我的表都有一个ID字段,是自动编号),查询完后,再用query.locate('keyfields','keyvalue',[])定位,即可