bestlong 怕失憶論壇
標題:
Delphi ADO + DBGrid 點擊標題欄排序
[打印本頁]
作者:
bestlong
時間:
2008-2-27 11:12
標題:
Delphi ADO + DBGrid 點擊標題欄排序
在 Delphi 中使用 ADO 作資料連接元件處理的時,可以使用 Sort 屬性來作出點選標題欄排序的功能。程式大致如下:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
i: integer;
begin
if ADOQuery1.State = dsBrowse then
begin
//計算欄位不可排列
if ADOQuery1.FieldByName(Column.FieldName).FieldKind = fkData then
begin
for i := 0 to DBGrid1.Columns.Count -1 do
begin
if DBGrid1.Columns[i] <> Column then
begin
if (Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▲')
or (Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▼') then
DBGrid1.Columns[i].Title.Caption :=
Copy(DBGrid1.Columns[i].Title.Caption,3,length(DBGrid1.Columns[i].Title.Caption));
end else begin
if Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▼' then
begin
Column.Title.Caption :=
'▲' + Copy(Column.Title.Caption,3,length(Column.Title.Caption));
ADOQuery1.Sort := Column.FieldName + ' DESC';
end else if Copy(DBGrid1.Columns[i].Title.Caption,1,2)='▲' then
begin
Column.Title.Caption :=
'▼' + Copy(Column.Title.Caption,3,length(Column.Title.Caption));
ADOQuery1.Sort := Column.FieldName;
end else
begin
Column.Title.Caption := '▼' + Column.Title.Caption;
ADOQuery1.Sort := Column.FieldName;
end;
end;
end;
end;
end;
end;
複製代碼
請注意其中指定升冪(ASC)降冪(DESC)一定要用大寫,否則程式會出錯
歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/)
Powered by Discuz! X1.5