DBGrid及ListView点击标题栏自动排序 listview 点击排序

一、DBGrid点击标题栏自动排序

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
DBGrid及ListView点击标题栏自动排序 listview 点击排序

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;

  

爱华网本文地址 » http://www.413yy.cn/a/25101011/89941.html

更多阅读

怎么更改qq空间标题栏 qq空间标题栏素材

怎么更改qq空间标题栏——简介QQ空间是展示个人形象的好地方,下面跟大家分享的是怎么更改qq空间标题栏。有需要的可以了解一下哦。怎么更改qq空间标题栏——方法/步骤怎么更改qq空间标题栏 1、登录QQ空间,然后看到空间上面的装扮,从这

怎样去掉QQ空间的标题栏? qq空间标题栏背景尺寸

QQ空间标题栏没有直接取消的功能。如果您不想显示默认的标题栏样式,建议您用QQ空间装扮进行装饰,同时我们提供了一款免费透明的标题栏给大家体验,详细操作如下。怎样去掉QQ空间的标题栏?——工具QQ空间6.0版本怎样去掉QQ空间的标题栏

浩辰CAD教程机械2012之九十二:自定义标题栏一

很多制造业企业的设计师使用浩辰CAD机械软件专业版和AUTOMechanical进行辅助绘图,这两款软件支持一张图纸中绘制多个图框。那么,我们如何在AM或者浩辰CAD机械专业版中定义属于自己的标题栏呢,下面就给大家介绍相关方法。首先看一下我

声明:《DBGrid及ListView点击标题栏自动排序 listview 点击排序》为网友欠缺未來分享!如侵犯到您的合法权益请联系我们删除