?? 關(guān)于在dbgrid中的列排序 (2001年5月19日).txt
字號(hào):
關(guān)于在dbgrid中的列排序 (2001年5月19日)
網(wǎng)友更新 分類:數(shù)據(jù)庫 作者: beckham(推薦) 推薦:beckham 閱讀次數(shù):288
(http://www.codesky.net)
--------------------------------------------------------------------------------
你好,你的問題我在實(shí)際中遇到過,可以這樣實(shí)現(xiàn)。保證可以用的。~~
先寫個(gè)DBGrid1TitleClick事件,把要排序的字段標(biāo)記為黃色
(當(dāng)然其他顏色也可以啦。黃色的明顯的~~)
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);//加一個(gè)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;
再放一個(gè)按鈕,用來點(diǎn)擊排序
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;
你還可以點(diǎn)擊多個(gè)字段進(jìn)行排序。
dm1就是數(shù)據(jù)模塊的名字(可以隨便取的)我們一般都是把一些query什么控件放到數(shù)據(jù)模塊中。便于管理。
qlb就是你說的query。如果你沒有建立數(shù)據(jù)模塊,也可以直接用query1,不用dm1.qlb。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -