📄 关于在dbgrid中的列排序 (2001年5月19日).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 + -