bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Delphi Delphi ADO + DBGrid 點擊標題欄排序
查看: 5490|回復: 0
go

Delphi ADO + DBGrid 點擊標題欄排序 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2008-2-27 11:12 |只看該作者 |倒序瀏覽 |打印
在 Delphi 中使用 ADO 作資料連接元件處理的時,可以使用 Sort 屬性來作出點選標題欄排序的功能。程式大致如下:
  1. procedure TForm1.DBGrid1TitleClick(Column: TColumn);
  2. var
  3.   i: integer;
  4. begin
  5.   if ADOQuery1.State = dsBrowse then
  6.   begin
  7.     //計算欄位不可排列
  8.     if ADOQuery1.FieldByName(Column.FieldName).FieldKind = fkData then
  9.     begin
  10.     for i := 0 to DBGrid1.Columns.Count -1 do
  11.     begin
  12.       if DBGrid1.Columns[i] <> Column then
  13.       begin
  14.         if   (Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▲')
  15.           or (Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▼') then
  16.             DBGrid1.Columns[i].Title.Caption :=
  17.               Copy(DBGrid1.Columns[i].Title.Caption,3,length(DBGrid1.Columns[i].Title.Caption));
  18.       end else begin
  19.         if Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▼' then
  20.         begin
  21.           Column.Title.Caption :=
  22.             '▲' + Copy(Column.Title.Caption,3,length(Column.Title.Caption));
  23.           ADOQuery1.Sort := Column.FieldName + ' DESC';
  24.         end else if Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▲' then
  25.         begin
  26.           Column.Title.Caption :=
  27.             '▼' + Copy(Column.Title.Caption,3,length(Column.Title.Caption));
  28.           ADOQuery1.Sort := Column.FieldName;
  29.         end else
  30.         begin
  31.           Column.Title.Caption := '▼' + Column.Title.Caption;
  32.           ADOQuery1.Sort := Column.FieldName;
  33.         end;
  34.       end;
  35.     end;
  36.     end;
  37.   end;
  38. end;
複製代碼
請注意其中指定升冪(ASC)降冪(DESC)一定要用大寫,否則程式會出錯
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-30 19:29 , Processed in 0.008871 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.