在DBgrid中多行选定,只能Ctrl+mouse不能用Shift+Mouse
用listview可以但,需要自己写数据。我想点击标题栏排序,目前是根据点击的栏目,然后,重新查询并 order by可以实现。
(将order前的SQL字符串保存的一个string变量中,每次先clear,然后ADD,再ADD order by)
但数据量多的时候刷新是问题,我差delphi帮助listview可以这值
sortby sorted sortcolumn实现的,但无法用各位高手帮忙
用listview可以但,需要自己写数据。我想点击标题栏排序,目前是根据点击的栏目,然后,重新查询并 order by可以实现。
(将order前的SQL字符串保存的一个string变量中,每次先clear,然后ADD,再ADD order by)
但数据量多的时候刷新是问题,我差delphi帮助listview可以这值
sortby sorted sortcolumn实现的,但无法用各位高手帮忙
Column: TListColumn);
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
end;procedure TMain_Form.Lv_CbdlCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
var
ix: Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else
begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
end;
var
DataSet: TDataSet;
begin
DataSet := Column.Field.DataSet;
if DataSet is TCustomADODataSet then
with TCustomADODataSet(DataSet) do
begin
if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
Sort := Column.Field.FieldName + ' DESC' else
Sort := Column.Field.FieldName + ' ASC';
end;
end;
这个最棒,拷过去就可以了,双向排序
倒序
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
--->
Compare := CompareText(Item2.SubItems[ix],Item1.SubItems[ix]);
(一)
能在标题用上下的三角标示用变量记住,当前是顺序还是倒序可以实现,二次点击倒过来排序,有更简单的方法吗?(二)
对于一些非字符串性的内容,如时间,数字,如何排序。
(三)
首列是序号从1...n,是手工上取得,排序后就乱了,内让他自动仍然变回1...n按顺序排列吗?
(四)