乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Delphi DBGrid 數(shù)據(jù)排序(ADOQuery、ADOTable、AdoDataSet、Clientdataset、UniQuery、FDQuery)

       容心居 2021-07-06

      Delphi DBGrid 數(shù)據(jù)排序(ADOQuery、ADOTable、AdoDataSet、Clientdataset、UniQuery、FDQuery)

      1、DBGrid 配合ADOQuery 使用

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      procedure TForm1.DBGrid1TitleClick(Column: TColumn);
      var
        i: integer;
      begin
        for i := 1 to DBGrid1.Columns.Count do
        begin
      //恢復(fù)所有標(biāo)題字體為默認(rèn)
          DBGrid1.Columns[i - 1].Title.Font.Color := clWindowText;
          DBGrid1.Columns[i - 1].Title.Font.Style := [];
        end;
        if ADOQuery1.Sort <> (Column.FieldName + ' ASC') then //判斷原排序方式
        begin
          ADOQuery1.Sort := Column.FieldName + ' ASC';
          Column.Title.Font.Color := clRed; //改變標(biāo)題行字體為紅色,表示當(dāng)前的排序方式為升序
          Column.Title.Font.Style := [fsBold];
        end
        else
        begin
          ADOQuery1.Sort := Column.FieldName + ' DESC';
          Column.Title.Font.Color := clBlue; //改變標(biāo)題行字體為紅色,表示當(dāng)前的排序方式為降序
          Column.Title.Font.Style := [fsBold];
        end;
      end;

      2、DBGrid 配合ADOTable 操作類似

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      procedure TForm1.DBGrid1TitleClick(Column: TColumn);
      begin
        with ADOTable1 do
        begin
          if DBGrid1Boolean then
            TADOTable(ryADOTable1).Sort := Column.FieldName + ' DESC'
          else
            TADOTable(ryADOTable1).Sort := Column.FieldName;
          DBGrid1Boolean := not (DBGrid1Boolean);
        end;
      end;

      3、其他參考(AdoDataSet、Clientdataset)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      //How to Use:
      //procedure TForm1.DBGrid1TitleClick(Column: TColumn);
      //begin
      // GridTitleSort(column);
      //end;
      procedure GridTitleSort(Column: TColumn);
      type
        TFieldTypeSet = set of TFieldType;
      var
        s, cFieldName: string;
        i: integer;
        DataSet: TDataSet;
        GridFieldTypeSet: TFieldTypeSet;
        procedure SetTitle;
        var
          ii: 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) = 1) or (pos('↓', cStr) = 1) then
            begin
              Delete(cStr, 1, 2);
              c.Title.Caption := cStr;
            end;
          end;
        end;
      begin
        DataSet := Column.Grid.DataSource.DataSet;
        GridFieldTypeSet := [ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftTypedBinary, ftFixedChar, ftWideString, ftLargeint, ftVariant];
        if not (Column.Field.DataType in GridFieldTypeSet) then
          Exit; //§P&Acirc;_&brvbar;r&not;q&Atilde;&thorn;&laquo;&not;
        SetTitle;
        if Column.Field.FieldKind = fkLookup then
          cFieldName := Column.Field.KeyFields
        else if Column.Field.FieldKind = fkCalculated then
          cFieldName := Column.Field.KeyFields
        else
          cFieldName := Column.FieldName;
      //=================================AdoDataSet=====================
        if DataSet is TCustomADODataSet then
        begin
          s := TCustomADODataSet(DataSet).Sort;
          if s = '' then
          begin
            s := cFieldName;
            Column.Title.Caption := '↑' + Column.Title.Caption;
          end
          else
          begin
            if Pos(cFieldName, s) <> 0 then
            begin
              i := Pos('DESC', s);
              if i <= 0 then
              begin
                s := s + ' DESC';
                Column.Title.Caption := '↓' + Column.Title.Caption;
              end
              else
              begin
                Column.Title.Caption := '↑' + Column.Title.Caption;
                Delete(s, i, 4);
              end;
            end
            else
            begin
              s := cFieldName;
              Column.Title.Caption := '↑' + Column.Title.Caption;
            end;
          end;
          TCustomADODataSet(DataSet).Sort := s;
        end
      //============================Clientdataset==========================
        else if DataSet is TClientDataSet then
        begin
          if TClientDataSet(DataSet).indexfieldnames <> '' then
          begin
            i := TClientDataSet(DataSet).IndexDefs.IndexOf('i' + Column.FieldName);
            if i = -1 then
            begin
              with TClientDataSet(DataSet).IndexDefs.AddIndexDef do
              begin
                Name := 'i' + Column.FieldName;
                Fields := Column.FieldName;
                DescFields := Column.FieldName;
              end;
            end;
            TClientDataSet(DataSet).IndexFieldNames := '';
            TClientDataSet(DataSet).IndexName := 'i' + Column.FieldName;
            Column.Title.Caption := '↓' + Column.Title.Caption;
          end
          else
          begin
            TClientDataSet(DataSet).IndexName := '';
            TClientDataSet(DataSet).IndexFieldNames := column.fieldname;
            Column.Title.Caption := '↑' + Column.Title.Caption;
          end;
        end;
      end;

      4、如果使用的是 UniQuery 操作類似:

      操作 UniQuery 的 IndexFieldNames屬性:

      1
      indexfieldnames:='字段 desc',

      5、FDQuery  

         參考操作 4

       

       

      創(chuàng)建時間:2020.09.11  更新時間:2021.01.22 /  2021.06.16

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多