線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2563
推到 Plurk!
推到 Facebook!

如何點DBGrid選標頭欄進行正逆排序

 
yu168
一般會員


發表:29
回覆:27
積分:16
註冊:2002-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-27 21:16:46 IP:220.130.xxx.xxx 未訂閱

如標題, 我想讓mouse點選 DBGrid 某一欄位標頭時可以進行排序, 不知如果做??

又, 有沒有可能在標頭欄加上一個向上或向下的三角行表示排序的方向??

Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-28 08:19:05 IP:210.65.xxx.xxx 未訂閱

請參考一下:

http://www.8888i.net/dispQAInfo.php?id=1199

Fishman

------
Fishman
mypigbaby
高階會員


發表:11
回覆:168
積分:155
註冊:2006-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-28 08:22:32 IP:210.200.xxx.xxx 未訂閱

豬寶寶的寫法給您參考


[code]

procedure TForm1.DG1TitleClick(Column: TColumn);
begin

if RightStr(ADOQUERY1.Sort,3)='ESC' THEN


ADOQUERY1.Sort:=Column.FieldName ' ASC'


ELSE
ADOQUERY1.Sort:=Column.FieldName ' DESC';

end;

[/code]

yu168
一般會員


發表:29
回覆:27
積分:16
註冊:2002-06-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-28 11:20:08 IP:59.124.xxx.xxx 未訂閱

感謝Fishman指引的明燈, 小弟個人比較欣賞豬寶寶的簡潔寫法, 只不過豬寶寶的無法標示出目前的排序方向, 所以不材的小弟突發異想試著將兩者合併起來, 給看倌參考....借花獻佛....借花獻佛....

procedure TForm2.DBGrid1TitleClick(Column: TColumn);
procedure ClearSortMark;
var
ii,x:integer;
cStr:string;
c:TColumn;
begin
for ii:=0 to TDBGrid(Column.Grid).Columns.Count-1 do
begin
c:=TDBGrid(Column.Grid).Columns[ii];
cStr:=c.Title.Caption;
if (pos('▲',cStr)<>0) then
Delete(cStr, pos('▲',cStr),2)
else if (pos('▼',cStr)<>0) then
Delete(cStr, pos('▼',cStr),2);
c.Title.Caption:=cStr;
end;
end;
begin
ClearSortMark;
if RightStr(ADOQUERY1.Sort,3)='ESC' THEN
begin
ADOQUERY1.Sort:=Column.FieldName ' ASC';
Column.Title.Caption := Column.Title.Caption '▲';
end
ELSE
begin
ADOQUERY1.Sort:=Column.FieldName ' DESC';
Column.Title.Caption := Column.Title.Caption '▼';
end;
end;

系統時間:2024-07-03 8:23:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!