⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 关于在dbgrid中的列排序 (2001年5月19日).txt

📁 delphi 编程技巧
💻 TXT
字号:
关于在dbgrid中的列排序 (2001年5月19日) 

网友更新  分类:数据库   作者: beckham(推荐)  推荐:beckham   阅读次数:288  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
你好,你的问题我在实际中遇到过,可以这样实现。保证可以用的。~~
先写个DBGrid1TitleClick事件,把要排序的字段标记为黄色
(当然其他颜色也可以啦。黄色的明显的~~)
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
i:integer;
begin
if column.Title.Color<>clyellow then
begin
Column.Title.Color:=clYellow;
Memo1.Lines.Add(Column.Field.FieldName);//加一个memo,让它不可见
end
else begin
for i:=0 to memo1.Lines.Count-1 do 
if memo1.Lines.Strings[i]=Column.Field.FieldName then
memo1.Lines.Delete(i);
Column.Title.Color:=clsilver;
end;
end;


再放一个按钮,用来点击排序
procedure TForm1.ToolButton12Click(Sender: TObject);
var clo:string;
i:integer;
begin
if Memo1.Lines.Count=0 then exit;
clo:='';
for i:=0 to Memo1.Lines.Count-1 do
clo:=clo+Memo1.Lines.Strings[i]+';';
clo:=copy(clo,1,length(clo)-1);
dm1.qlb.IndexFieldNames:=clo;
dm1.qlb.First;
memo1.Clear;
for i:=0 to dbgrid1.Columns.Count-1 do 
dbgrid1.Columns[i].Title.Color :=clSilver;
end;


你还可以点击多个字段进行排序。


dm1就是数据模块的名字(可以随便取的)我们一般都是把一些query什么控件放到数据模块中。便于管理。
qlb就是你说的query。如果你没有建立数据模块,也可以直接用query1,不用dm1.qlb。  
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -