亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sort.pas

?? delphi開發的中國移動大客戶管理系統,后臺數據庫為oracle
?? PAS
字號:
//------------------------------------------------------------
//      作者:曾慶順
//      模塊:通用排序窗口
//      時間:2001.07.08
//      功能介紹:P_Sort( Query:TQuery;DbGRid:TDBgrid);
//                Query 為對應的數據集,DbGRid對應的數據控件---標準控件
//-----------------------------------------------------------
unit Sort;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, ExtCtrls, Buttons, StdCtrls,dbtables,dbgrids,db;

type
  TTSortFrm = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    Panel2: TPanel;
    StringGrid2: TStringGrid;
    Panel3: TPanel;
    Panel4: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure StringGrid1DblClick(Sender: TObject);
    procedure StringGrid2DblClick(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
    FQuery:TQuery;
    FDbGRid:TDBgrid;
    procedure DeleteRow(Row:integer;StringGrid: TStringGrid);
    Function GetFieldName(FindName:string):string;
    Function GetKeyFieldName(FindName:string):string;
  end;
  procedure P_Sort( Query:TQuery;DbGRid:TDBgrid);
var
  TSortFrm: TTSortFrm;

implementation

{$R *.DFM}
procedure P_Sort( Query:TQuery;DbGRid:TDBgrid);
var dlg:TTSortFrm;
begin
    if not Dbgrid.DataSource.DataSet.Active then exit;
    dlg:=TTSortFrm.Create(nil);
    dlg.FDbgrid:=DBGrid;
    dlg.FQuery:=Query;
    dlg.ShowModal;
end;

procedure TTSortFrm.FormCreate(Sender: TObject);
begin
    StringGrid1.Cells[0,0]:='   序號';
    StringGrid1.Cells[1,0]:='      字段名';
    StringGrid2.Cells[0,0]:='   序號';
    StringGrid2.Cells[1,0]:='      字段名';
    StringGrid2.Cells[2,0]:='排序條件';
end;

procedure TTSortFrm.FormShow(Sender: TObject);
var i:integer;
    RNum:integer;
    str:string;
begin
   for i:=0 to FDbGrid.Columns.Count -1 do
   begin
     //和奇怪的事情,如果傳入的grid為繼成的窗體的FDbGrid.Fields[0]出錯
     try
       str:=FDbGrid.Fields[i].KeyFields;
     except
       continue;
     end;
     if (FDbGrid.Fields[i].FieldKind = fkData) or (FDbGrid.Fields[i].FieldKind = fkLookup) then
     begin
        //判斷是否還是查找字段
        if (FDbGrid.Fields[i].FieldKind = fkLookup) then
        begin
           str:=FDbGrid.Fields[i].KeyFields;
           if FDbGrid.DataSource.DataSet.FieldByName(str).FieldKind = fkLookup then continue;
        end;

        if StringGrid1.Cells[0,1]='' then RNum:=1
        else
        begin
          RNum:=StringGrid1.RowCount;
          StringGrid1.RowCount:=StringGrid1.RowCount + 1;
        end;
        StringGrid1.Cells[0,RNum]:=inttostr(RNum);
        StringGrid1.Cells[1,RNum]:=trim(FDbGrid.Columns[i].Title.Caption);
     end;
   end;
end;

procedure TTSortFrm.DeleteRow(Row:integer;StringGrid: TStringGrid);
var i:integer;
begin
    //大于2時要刪除行
    if StringGrid.RowCount > 2 then
    begin
       for i:=Row to StringGrid.RowCount - 1 do
       begin
          //行移動
          StringGrid.Rows[i]:=StringGrid.Rows[i+1];
       end;
       StringGrid.RowCount:=StringGrid.RowCount - 1;
    end
    else StringGrid.Rows[row].Clear;

end;
procedure TTSortFrm.StringGrid2SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var RNum:integer;
begin
   //當單擊第三列時改變升降序
   if ACol = 2 then
   begin
       if StringGrid2.Cells[0,ARow]='' then exit;

       if StringGrid2.Cells[2,ARow]='↑' then StringGrid2.Cells[2,ARow]:='↓'
       else StringGrid2.Cells[2,ARow]:='↑' ;
   end;
end;

procedure TTSortFrm.StringGrid1DblClick(Sender: TObject);
var RNum:integer;
begin
    if StringGrid1.Cells[0,1]='' then exit;
    //雙擊時移動行
    if StringGrid2.Cells[0,1]='' then RNum:=1
    else
    begin
       RNum:=StringGrid2.RowCount;
       StringGrid2.RowCount:=StringGrid2.RowCount + 1;
    end;
    StringGrid2.Cells[0,RNum]:=StringGrid1.Cells[0,StringGrid1.row];
    StringGrid2.Cells[1,RNum]:=StringGrid1.Cells[1,StringGrid1.row];
    StringGrid2.Cells[2,RNum]:='↑';
    DeleteRow(StringGrid1.row,StringGrid1);
end;

procedure TTSortFrm.StringGrid2DblClick(Sender: TObject);
var RNum:integer;
begin
   if StringGrid2.col = 2 then exit;
   //雙擊時移動行
   if StringGrid2.Cells[0,1]='' then exit;
   if StringGrid1.Cells[0,1]='' then RNum:=1
   else
   begin
      RNum:=StringGrid1.RowCount;
      StringGrid1.RowCount:=StringGrid1.RowCount + 1;
   end;
   StringGrid1.Cells[0,RNum]:=StringGrid2.Cells[0,StringGrid2.row];
   StringGrid1.Cells[1,RNum]:=StringGrid2.Cells[1,StringGrid2.row];
   DeleteRow(StringGrid2.row,StringGrid2);
end;

procedure TTSortFrm.SpeedButton2Click(Sender: TObject);
begin
  ModalResult:=mrCancel;
end;
Function TTSortFrm.GetFieldName(FindName:string):string;
var i:integer;
begin
   for i:=0 to FDbGrid.Columns.Count -1 do
   begin
     if trim(FDbGrid.Columns[i].Title.Caption) = FindName then
     begin
        result:= FDbGrid.Columns[i].FieldName;
        break;
     end;
   end;
end;
//得到查查找字段的主鍵字段  KeyFields
Function TTSortFrm.GetKeyFieldName(FindName:string):string;
var i:integer;
begin
   result:='';
   for i:=0 to FDbGrid.Columns.Count -1 do
   begin
     if trim(FDbGrid.Columns[i].Title.Caption) = FindName then
     begin
        result:= FDbGrid.Columns[i].Field.KeyFields;
        break;
     end;
   end;
end;
procedure TTSortFrm.SpeedButton1Click(Sender: TObject);
var FOrder:string;
    i:integer;
    str:string;
    p:integer;
    FieldName:string;
begin
    if StringGrid2.Cells[0,1] ='' then exit;
    FOrder:=' ORDER BY ';
    for i:=1 to StringGrid2.RowCount - 1 do
    begin
       FieldName:=GetFieldName(StringGrid2.Cells[1,i]);
       //判斷是否是查找字段
       if FDbGrid.DataSource.DataSet.FieldByName(FieldName).FieldKind = fkLookup then
         FOrder:=FORder + GetKeyFieldName(StringGrid2.Cells[1,i])
       else
         FOrder:=FORder + FieldName;

       if StringGrid2.Cells[2,i] = '↑' then FOrder:=FORder+' ASC,'
       else FOrder:=FORder+' DESC,';
    end;
    Forder:=Copy(Forder,0,length(Forder)-1);//去掉最后的','
    str:=StrUpper(pchar(FQuery.SQL.Text));
    str:=copy(str,0,length(str)-2);
    p:=pos('ORDER BY',str);
    if p>0 then str:=copy(str,0,p-1);
    FQuery.DisableControls;
    FQuery.close;
    FQuery.sql.Text:=str+FOrder;
    FQuery.open;
    FQuery.EnableControls;
    ModalResult:=mrOk;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss影院一区二区三区| 国产欧美中文在线| 欧美高清你懂得| 日韩区在线观看| 国产精品久久久久久久久快鸭 | 丁香五精品蜜臀久久久久99网站 | 亚洲精品你懂的| 亚洲综合另类小说| 青青草国产成人av片免费| 老鸭窝一区二区久久精品| 国产乱妇无码大片在线观看| a美女胸又www黄视频久久| 91丝袜高跟美女视频| 日韩欧美一级片| 国产精品天干天干在线综合| 亚洲一二三区不卡| 国模冰冰炮一区二区| 91蜜桃免费观看视频| 在线综合亚洲欧美在线视频| 国产亚洲一区二区三区四区| 亚洲欧美另类小说视频| 久久精品国产第一区二区三区| 国产精品综合二区| 91精品国产手机| 亚洲欧美偷拍另类a∨色屁股| 国产乱码精品一区二区三| 91精品国产综合久久久蜜臀图片| 国产精品久久久久一区二区三区 | 日本一区二区三区视频视频| 亚洲国产成人av网| 国产精品自在欧美一区| 精品日韩在线观看| 久久99精品久久只有精品| 在线成人免费观看| 日韩专区中文字幕一区二区| 成人高清在线视频| 久久精品欧美一区二区三区不卡| 亚洲 欧美综合在线网络| 欧美亚洲愉拍一区二区| 综合久久国产九一剧情麻豆| 日本韩国一区二区三区| 婷婷中文字幕综合| 欧美精品vⅰdeose4hd| 亚洲综合免费观看高清完整版在线| 国产69精品久久777的优势| 一区免费观看视频| 一本色道久久综合亚洲91| 国产精品久久久久久久久动漫| 国产成人精品免费在线| 国产精品午夜久久| 精品视频123区在线观看| 丝袜亚洲另类欧美| 1024精品合集| 欧美成人a∨高清免费观看| 粉嫩一区二区三区在线看| 亚洲男人天堂一区| 欧美成人精品1314www| 99久久精品费精品国产一区二区| 亚洲国产一区二区a毛片| 久久久精品免费观看| 91麻豆精东视频| 蜜臀精品一区二区三区在线观看| 亚洲男人的天堂网| 中文字幕av资源一区| 精品视频1区2区| eeuss鲁片一区二区三区在线看| 一区二区不卡在线播放 | 不卡电影一区二区三区| 视频一区二区国产| 亚洲国产sm捆绑调教视频| 欧美国产一区在线| 精品国产a毛片| 欧美性猛交xxxx乱大交退制版| 成人av网站大全| 国产成人综合在线观看| 国产伦精品一区二区三区免费| 蜜臀av性久久久久蜜臀aⅴ | 欧美怡红院视频| 欧美在线一区二区三区| 成人app下载| 91免费精品国自产拍在线不卡| 国产毛片精品视频| www.亚洲人| 欧美日韩视频在线观看一区二区三区 | 久久 天天综合| 毛片基地黄久久久久久天堂| 亚洲第一福利一区| 爽好久久久欧美精品| 精品中文字幕一区二区小辣椒| 麻豆国产欧美一区二区三区| 免费高清在线一区| 美女mm1313爽爽久久久蜜臀| 成熟亚洲日本毛茸茸凸凹| 97久久精品人人做人人爽| 成人黄色软件下载| 91黄色免费观看| 欧美高清视频一二三区 | 欧美日韩国产综合草草| 欧美性极品少妇| 欧美电影免费观看高清完整版在| 欧美mv日韩mv国产网站| 国产精品嫩草99a| 天天av天天翘天天综合网| 国产精品1区2区| 日本久久精品电影| 精品成人一区二区三区四区| 一区二区三区在线视频免费 | 91精品国模一区二区三区| 2欧美一区二区三区在线观看视频| 欧美精彩视频一区二区三区| 精品一区二区久久久| 日本道免费精品一区二区三区| 欧美一区二区三区免费在线看| 中文字幕在线不卡一区二区三区| 日韩国产高清在线| 91色在线porny| 亚洲精品一区二区三区福利| 日韩在线一区二区| 欧美日韩中文另类| 亚洲黄网站在线观看| 国产成人aaa| 欧美一区二区三区在线观看 | 蜜乳av一区二区| 日本韩国欧美三级| 日本一区二区综合亚洲| 久久精品国产一区二区三 | 国产亚洲精久久久久久| 亚洲二区视频在线| 91亚洲午夜精品久久久久久| 精品少妇一区二区三区视频免付费 | 成人av在线影院| 色婷婷av久久久久久久| 久久精品在这里| 国产一区二区三区观看| 91精品国产色综合久久不卡电影 | 色999日韩国产欧美一区二区| 欧美日韩二区三区| 国产亚洲短视频| 亚洲国产成人av网| 精品欧美久久久| 国产成人在线看| 国产精品高清亚洲| 欧美在线free| 国产伦精品一区二区三区视频青涩| 日韩欧美成人激情| 国产一区二区91| 亚洲男人的天堂在线aⅴ视频| 欧美体内she精视频| 日韩精品一区第一页| 精品国产乱码久久久久久久| 国产成人无遮挡在线视频| 一区二区三区在线免费观看| 欧美日韩国产美| 国产毛片精品视频| 悠悠色在线精品| 精品乱码亚洲一区二区不卡| 国产一区激情在线| 一区二区三区日韩欧美精品| 51精品国自产在线| 在线观看欧美日本| 国产成人综合自拍| 免费观看一级特黄欧美大片| 欧美成人午夜电影| 欧美成人女星排行榜| 欧美日韩中文一区| 成人成人成人在线视频| 亚洲成人免费av| 偷拍亚洲欧洲综合| 最近日韩中文字幕| 国产性色一区二区| 日本一区免费视频| 精品欧美乱码久久久久久1区2区| 91丝袜美女网| jizzjizzjizz欧美| www.亚洲免费av| 经典三级视频一区| 国产伦精品一区二区三区在线观看| 亚洲成va人在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美r级电影在线观看| 精品久久国产97色综合| 日韩女优视频免费观看| 日本一区二区视频在线| 国产精品视频在线看| 国产精品国产三级国产aⅴ入口| 久久夜色精品一区| 国产精品免费久久| 亚洲欧美一区二区久久| 亚洲成人av资源| 国产一区二区三区久久悠悠色av| 国产成人一级电影| 99免费精品在线观看| 91影院在线免费观看| 日韩一区二区三区精品视频| 久久亚洲精品国产精品紫薇| 亚洲国产精品黑人久久久| 一区二区三区在线免费播放| 亚洲美女视频在线| 日本欧美一区二区| 成人激情免费电影网址|