问题如上,最好能给一些代码,先给立即给分结帐!!
THKS!
THKS!
解决方案 »
- 请教如何把一个过程赋给事件触发执行
- 脆求骨灰级高手!Windows 2K 用户环境问题?
- 程序占用内存不断增大,请帮忙解决.
- 哪里有Delphi7.1下载????
- 像记事本程序一样打开一个已经打开的文本文件
- 还是动态数组问题
- 不爽!散分!
- Metadata update statement is not allowed by the current database SQL dia???
- 请教高手 delphi 里能否调用 sql文件(a.sql) 将它执行(数据库是oracle)?
- 请大侠多多提点!!我的listview子项的双击功能无法实现。
- 程序运行时,系统内存使用的异常波动
- delphi 中的数据集显示排序???
begin
with data.jl do
begin
sql.Clear ;
sql.Add('select * from 扫描记录 order by '+Column.FieldName);
open;
end;
end;
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
indexfield : string;
begin
with adoQuery1 do begin
indexField := column.Field.FieldName;
close;
sql.Clear;
sql.add(sqlstr);
sql.add(' order by ');
sql.add(indexField);
open;
end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
sqlStr := adoQuery1.SQL.Text;
end;
[email protected]
在ontitleclick中写
Adoquery..Sort :=column.FieldName
private
FSort,FSortField:String;//控制grid排序
procedure Tform1.jcgridTitleClick(Column: TColumn);
var
iFieldCount:Integer;
begin
//进行点击Title排序
for iFieldCount := 0 to jcGrid.Columns.Count - 1 do
begin
if (Copy(jcGrid.Columns[iFieldCount].Title.Caption,Length(jcgrid.Columns[iFieldCount].Title.Caption)-1,2) = '∨') or (Copy(jcgrid.Columns[iFieldCount].Title.Caption,Length(jcgrid.Columns[iFieldCount].Title.Caption)-1,2) = '∧') then
begin
jcgrid.Columns[iFieldCount].Title.Caption := Copy(jcgrid.Columns[iFieldCount].Title.Caption,1,Length(jcgrid.Columns[iFieldCount].Title.Caption)-3);
break;
end;
end;
if Column.FieldName = FSortField then
begin
if FSort = 'DESC' then
FSort := 'ASC'
else
FSort := 'DESC';
end
else begin
FSortField := Column.FieldName;
FSort := 'ASC';
end;
if FSort = 'ASC' then
Column.Title.Caption := Column.Title.Caption + ' ∧'
else
Column.Title.Caption := Column.Title.Caption + ' ∨';
cpcdatamodule.jcQuery.Sort:= Column.FieldName + ' ' + FSort;试试,jcquery为一adoquery,jcdbig为一dbgrid......
ADOTable1.IndexFieldNames:=Column.FieldName;
www.51delphi.com里有下载
碰到问题查不到,花了半天时间作了一个,不敢独享。
ADO类的数据集有Sort,但是TClientDataSet没有,故作。procedure SortCDS(Column:TColumn);
function FindColumn(Grid:TDbGrid;Name:string):TColumn;
var
i:integer;
begin
Result:=nil;
for i:=0 to Grid.Columns.Count-1 do
if Grid.Columns.Items[i].FieldName=Name then
Result:=Grid.Columns.Items[i];
end;
var
DataSet:TClientDataSet;
ASC:boolean;
Clm:TColumn;
begin
DataSet:=TClientDataSet(Column.Field.DataSet);
if Assigned(DataSet) and (not DataSet.IsEmpty) then
begin
if DataSet.IndexName=Column.Fieldname then
ASC:=StrPos(PChar(Column.Title.Caption),'▼')<>nil;
Clm:=FindColumn(TDbGrid(Column.Grid),DataSet.IndexName);
if Assigned(Clm) then
begin
DataSet.DeleteIndex(DataSet.IndexName);
Clm.Title.Caption:=Copy(Clm.Title.Caption,1,Length(Clm.Title.Caption)-2);
end;
if Asc then
begin
DataSet.AddIndex(Column.Fieldname,Column.FieldName,
[ixCaseInsensitive,ixDescending]);
Column.Title.Caption:=Column.Title.Caption+'▲';
end
else begin
DataSet.AddIndex(Column.Fieldname,Column.FieldName,[ixCaseInsensitive]);
Column.Title.Caption:=Column.Title.Caption+'▼';
end;
DataSet.IndexName:=Column.Fieldname;
end;
end;