Delphi简单函数实现Dbgrid多列排序,分优先级别
来源:互联网 发布:淘宝首页图片轮播 编辑:程序博客网 时间:2024/05/21 10:47
{
韩瑞臣;
将该函数放在DBgrid的TitleClick事件里面,temp是该Dbgrid对应的数据集控件,Column是点击事件中的
参数;
}
procedure Tf_exchlc.ClickTitle(Temp:TADOQuery; Column: TColumnEh);
var
s : string;
mark : Pointer;
begin
mark := Temp.GetBookmark;
if Temp.Active then
begin
case Column.Tag of
0 :
begin
if (pos(Column.Title.Caption,Temp.Sort) < 1) or (Temp.Sort = '') then
begin
if Temp.Sort <> '' then
Temp.Sort := Temp.Sort + ',' +Column.FieldName+' ASC'
else
Temp.Sort := Column.FieldName+' ASC';
end
else
begin
Temp.Sort := Temp.Sort + ',' +Column.FieldName+' ASC';
end;
s:= Trim(Column.Title.Caption);
if (Pos('▽',s)>0) or (Pos('△',s)>0) then
s:=Copy(s,1,Length(s)-2);
Column.Title.Caption := Format('%s △', [Trim(s)]);
Column.Font.Color := $00004000;
Column.Tag:=1;
end;
1 :
begin
if (pos(Column.Title.Caption,Temp.Sort) < 0) or (Temp.Sort = '') then
begin
if Temp.Sort <> '' then
Temp.Sort := Temp.Sort + ',' +column.FieldName+' DESC'
else
Temp.Sort := column.FieldName+' DESC';
end
else
begin
Temp.Sort := ReplaceString(Temp.Sort, Column.FieldName+' ASC',
column.FieldName+' DESC')
end;
s:= Trim(Column.Title.Caption);
if (Pos('▽',s)>0) or (Pos('△',s)>0) then
s:=Copy(s,1,Length(s)-2);
Column.Title.Caption := Format('%s ▽', [Trim(s)]);
Column.Font.Color := clNavy;
Column.Tag:=2;
end;
2 :
begin
Temp.Sort := ReplaceString(Temp.Sort, column.FieldName+' DESC', '');
s:= Trim(Column.Title.Caption);
if (Pos('▽',s)>0) or (Pos('△',s)>0) then
s:=Copy(s,1,Length(s)-2);
Column.Title.Caption := Format('%s', [Trim(s)]);
Column.Font.Color := clBlack;
Column.Tag:=0;
end;
end;
end;
Temp.GotoBookmark(mark);
end;
function ReplaceString(Source, FromText, ToText: string ): string;
var
I: integer;
tempString : string;
begin
for I := 1 to length(Source) do
begin
tempString := Copy(Source, I, length(FromText));
if TempString = FromText then
begin
delete(Source, I, Length(FromText));
insert(ToText,Source , I);
end;
end;
if ToText = '' then
begin
FromText := ',,';
ToText := ',';
for I := 1 to length(Source) do
begin
tempString := Copy(Source, I, length(FromText));
if TempString = FromText then
begin
delete(Source, I, Length(FromText));
insert(ToText,Source , I);
end;
end;
tempString := Copy(Source, length(Source), 1);
if tempString = ',' then Source := Copy(Source, 1, length(Source)-1);
tempString := Copy(Source, 1, 1);
if tempString = ',' then Source := Copy(Source, 2, length(Source)-1);
end;
Result := Source;
end;
- Delphi简单函数实现Dbgrid多列排序,分优先级别
- Delphi DBGrid重新排序
- Delphi中实现DBGrid列宽度自动调整
- Delphi调整Dbgrid列宽
- Delphi 实现微妙级别的延迟函数
- delphi实现dbgrideh点击列自动排序
- delphi 对指定DBGrid进行排序。
- Delphi 7 中DBGrid的排序。
- Delphi 7 中DBGrid的排序
- 原来DELPHI里面实现数据列表框的列排序是这么简单?
- 如何用DBGrid实现排序
- delphi 中得DBGRID实现鼠标滚动。
- Delphi实现凭证格式的DBGrid
- Delphi中DBgrid控件数据库点击某列按序排列
- delphi DBGrid自动适应列宽(转)
- DBGrid排序
- DELPHI中DBGrid中行的定位及着色实现
- DELPHI中DBGrid中行的定位及着色实现
- 选择哪个exo产品进行试用
- JSP问答
- 浅析:setsockopt()改善程序的健壮性
- java中文乱码的解决
- 关于多态的概念
- Delphi简单函数实现Dbgrid多列排序,分优先级别
- 垃圾邮件克星-GeniusFilter
- Hello RMI!
- Green Browser 开源,可能的原因?
- 专访:微软执行官眼中的IE7浏览器和RSS技术
- XSL-FO 基础知识 (四)
- 网友评论:没有了MySQL,我们使Linux还能干什么?
- 互联网永远不缺少机会
- 我所知道的几个国人的开源项目