cxGrid把GridMode设置为TRUE的时候,点列标题的时候不能自动排序了。如何解决?
解决方案 »
- 请教大家 我想把编写完的Ddelphi程序放在WinPE上运行 可以吗
- 请大家帮忙看看我的鼠标钩子有什么问题?双击消息得不到。
- 500分求这条鱼的代码!
- 关于ADOquery局域网共享操作问题?
- 表的添加删除
- 调用table组件的insertrecord插入一条记录之后,怎么获取该条记录的标识列的值?
- 头要我使用usb端口的读卡器,PC/SC规范开发一个读取卡片数据的程序,没有头绪呀,各位XDJM帮忙呀!
- 关于王寒松大虾的打印控件?
- 怎样删除数组里的某个数!!!
- CSDN宁无人乎???? 50+50==100!!!!---------创建快捷方式!!!!
- 庆祝儿子满月,洒分!
- 一个简单的SQL语句,请大虾帮忙!
var
I: Integer;
s, sLine: string;
sl: TStringList;
begin
with TcxGridDBTableView(TcxGridDataController(Sender).GridView) do
begin
if not Assigned(DataController.DataSource) then Exit;
if DataController.DataSource.State <> dsBrowse then Exit; sl := TStringList.Create;
try
for I := 0 to ColumnCount - 1 do
with Columns[I] do
begin
sLine := Format('%0.2d', [SortIndex]) + DataBinding.FieldName;
case SortOrder of
soAscending:
sl.Add(sLine + ' ASC');
soDescending:
sl.Add(sLine + ' DESC');
end;
end;
sl.Sort; s := '';
for I := 0 to sl.Count - 1 do
s := s + ',' + Copy(sl[I], 3, Length(sl[I]));
Delete(s, 1, 1);
TADOQuery(DataController.DataSource.DataSet).Sort := s;
finally
sl.Free;
end;
end;
var
i:integer;
begin
if (Not ADOQuery1.Active) or (ADOQuery1.RecordCount = 0) then exit;
/////////////////////////////////////////////////////////////清除标题头
for i:=0 to dbgrid1.Columns.Count-1 do
if (pos('∧',dbgrid1.Columns.Items[i].Title.caption)>0) or (pos('∨',dbgrid1.Columns.Items[i].Title.caption)>0) then
dbgrid1.Columns.Items[i].Title.caption:=copy(dbgrid1.Columns.Items[i].Title.caption,1,length(dbgrid1.Columns.Items[i].Title.caption)-2);
///////////////////////////////////////////////////////////////////////
try
if Pos('ASC',ADOQuery1.Sort)=0 then
begin
ADOQuery1.Sort := column.fieldname + ' ASC';
column.Title.Caption:=column.Title.Caption +'∧';
end
else
begin
ADOQuery1.Sort := column.fieldname + ' DESC';
column.Title.Caption:=column.Title.Caption +'∨';
end;except
application.MessageBox('不允许对该列排序!','提示',mb_ok+mb_iconerror);
end;end;