DBGrid及ListView点击标题栏自动排序 listview 点击排序
1、建立私有变量,控制排序方向与排序字段
private
FSort, FSortField: String; //控制Grid排序
2、在titleClick中写排序代码
procedure TfrmuZhutiZhiBiaoDataInput.DBGridEhInputTitleClick(
Column: TColumnEh);
var
iFieldCount:Integer;
begin
//进行点击Title排序
for iFieldCount := 0 to DBGridEhInput.Columns.Count - 1 do
begin
if (Copy(DBGridEhInput.Columns[iFieldCount].Title.Caption,Length(DBGridEhInput.Columns[iFieldCount].Title.Caption)-1,2) = '▼') or (Copy(DBGridEhInput.Columns[iFieldCount].Title.Caption,Length(DBGridEhInput.Columns[iFieldCount].Title.Caption)-1,2) = '▲') then
begin
DBGridEhInput.Columns[iFieldCount].Title.Caption := Copy(DBGridEhInput.Columns[iFieldCount].Title.Caption,1,Length(DBGridEhInput.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 + ' ▼';
AQDataInput.Sort := Column.FieldName + ' ' + FSort;
end;
二、ListView点击标题栏自动排序
1、定义全局变量
var m_bSort: boolean = False; //控制正反排序的变量
2、在程序代码最上方写上排序函数
//ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
var
txt1, txt2: string;
aInt: Integer;
begin
Result := 0;
if ParamSort <> 0 then
begin
try
txt1 := Item1.SubItems.Strings[ParamSort-1];
txt2 := Item2.SubItems.Strings[ParamSort-1];
if TryStrToInt(txt1, aInt) and TryStrToInt(txt2, aInt) then
begin
if m_bSort then
begin
if StrToInt(txt1) > StrToInt(txt2) then
begin
Result := 1;
end else if StrToInt(txt1) = StrToInt(txt2) then
begin
Result := 0;
end else
begin
Result := -1;
end;
end else
begin
if StrToInt(txt1) > StrToInt(txt2) then
begin
Result := -1;
end else if StrToInt(txt1) = StrToInt(txt2) then
begin
Result := 0;
end else
begin
Result := 1;
end;
end;
end else
begin
if m_bSort then
begin
Result := CompareText(txt1, txt2);
end else begin
Result := -CompareText(txt1, txt2);
end;
end;
except
end;
end else
begin
if TryStrToInt(Item1.Caption, aInt) and TryStrToInt(Item2.Caption, aInt) then
begin
if m_bSort then
begin
if StrToInt(Item1.Caption) > StrToInt(Item2.Caption) then
begin
Result := 1;
end else if StrToInt(Item1.Caption) = StrToInt(Item2.Caption) then
begin
Result := 0;
end else
begin
Result := -1;
end;
end else
begin
if StrToInt(Item1.Caption) > StrToInt(Item2.Caption) then
begin
Result := -1;
end else if StrToInt(Item1.Caption) = StrToInt(Item2.Caption) then
begin
Result := 0;
end else
begin
Result := 1;
end;
end;
end else
begin
if m_bSort then
begin
Result := CompareText(Item1.Caption,Item2.Caption);
end else
begin
Result := - CompareText(Item1.Caption,Item2.Caption);
end;
end;
end;
end;
3、在ColumnClick中增加排序调用的代码
procedure TframeDaDuiSort.ListViewDaDuiColumnClick(Sender: TObject;
Column: TListColumn);
begin
ListViewDaDui.CustomSort(@CustomSortProc, Column.Index);
m_bSort := not m_bSort;
end;
更多阅读
怎么更改qq空间标题栏 qq空间标题栏素材
怎么更改qq空间标题栏——简介QQ空间是展示个人形象的好地方,下面跟大家分享的是怎么更改qq空间标题栏。有需要的可以了解一下哦。怎么更改qq空间标题栏——方法/步骤怎么更改qq空间标题栏 1、登录QQ空间,然后看到空间上面的装扮,从这
怎样去掉QQ空间的标题栏? qq空间标题栏背景尺寸
QQ空间标题栏没有直接取消的功能。如果您不想显示默认的标题栏样式,建议您用QQ空间装扮进行装饰,同时我们提供了一款免费透明的标题栏给大家体验,详细操作如下。怎样去掉QQ空间的标题栏?——工具QQ空间6.0版本怎样去掉QQ空间的标题栏
浩辰CAD教程机械2012之九十二:自定义标题栏一
很多制造业企业的设计师使用浩辰CAD机械软件专业版和AUTOMechanical进行辅助绘图,这两款软件支持一张图纸中绘制多个图框。那么,我们如何在AM或者浩辰CAD机械专业版中定义属于自己的标题栏呢,下面就给大家介绍相关方法。首先看一下我
关于K-x的对焦,使用体会及红点问题11.8 -宾得Kx论坛-ZOL 宾得k50如何手动对焦
关于K-x的对焦,使用体会(及红点问题11.8)我已经入了K-x的300套机,才使用不到8个小时候,现在说一下体会。1、k-x在高光在对焦。没有问题,非常干脆。2、k-x的暗处的对焦也是很坚决的。所有相机拍暗的物体,反差不大的物体对焦都不好是通病,不只
如何在明细栏和标题栏中自动求多个零件总重。 a4零件图标题栏尺寸
Inventor 的工程图估计是所有三维产品中对国标支持的最好的。在明细表中,我们要分别给出零件的单重和总重,同时在标题栏中还要给出所有的零件的一个总重。那么如何通过Inventor来实现这样的功能呢?首先我们将将如何在明细表中实现:1