就是如何判断在dbgrid中的ontitleclick事件中点击的是那个column?

解决方案 »

  1.   

    看看对你有没帮助吧
    var
       iFieldCount:Integer;
       TmpSQL:String;
    begin
      for iFieldCount := 0 to CustomersDBGrid.Columns.Count - 1 do
      begin
         if (Copy(CustomersDBGrid.Columns[iFieldCount].Title.Caption,Length(CustomersDBGrid.Columns[iFieldCount].Title.Caption)-1,2) = '¨‹') or (Copy(CustomersDBGrid.Columns[iFieldCount].Title.Caption,Length(CustomersDBGrid.Columns[iFieldCount].Title.Caption)-1,2) = '¡ø') then
         begin
            CustomersDBGrid.Columns[iFieldCount].Title.Caption := Copy(CustomersDBGrid.Columns[iFieldCount].Title.Caption,1,Length(CustomersDBGrid.Columns[iFieldCount].Title.Caption)-3);
            break;
         end;
      end;
      if Column.FieldName = FSortField then
      begin
         if FSort = 'DESC' then
            FSort := 'ASC'
         else
            FSort := 'DESC';
      end
      else begin
        FSortField := Column.FieldName;
        FSort := 'ASC';
      end;
      if FSort = 'ASC' then
         Column.Title.Caption := Column.Title.Caption + ' ¡ø'
      else
         Column.Title.Caption := Column.Title.Caption + ' ¨‹';
      try
         With DMStoreManage do
            begin
               qrCustomers.Close;
               qrCustomers.SQL.Clear;
               TmpSQL:=CustSQL+' order by '+FSortField+' '+FSort;
               qrCustomers.SQL.Add(TmpSQL);
               qrCustomers.Open;
            end;
      except  end;
      

  2.   

    procedure TFrmbkdzcz.DBGrid1TitleClick(Column: TColumn);
    var ifieldcount:integer;
    begin
      for iFieldCount := 0 to DBGrid1.Columns.Count - 1 do
      begin
         if (Copy(DBGrid1.Columns[iFieldCount].Title.Caption,Length(DBGrid1.Columns[iFieldCount].Title.Caption)-1,2) = '▼') or (Copy(DBGrid1.Columns[iFieldCount].Title.Caption,Length(DBGrid1.Columns[iFieldCount].Title.Caption)-1,2) = '▲') then
         begin
            DBGrid1.Columns[iFieldCount].Title.Caption := Copy(DBGrid1.Columns[iFieldCount].Title.Caption,1,Length(DBGrid1.Columns[iFieldCount].Title.Caption)-3);
            break;
         end;
      end;
      if Column.FieldName = FSortField then
      begin
         if FSort = 'DESC' then
            FSort := 'ASC'
         else
            FSort := 'DESC';
      end
      else begin
        FSortField := Column.FieldName;
        FSort := 'ASC';
      end;
      if FSort = 'ASC' then
         Column.Title.Caption := Column.Title.Caption + ' ▲'
      else
         Column.Title.Caption := Column.Title.Caption + ' ▼';
     adoquery1.Sort := Column.FieldName + ' ' + FSort;
    end;
      

  3.   

    刚查看了一下delphi的帮助,注意到了
    在ontitileclick中有一个参数是Column,利用它可以解决关于哪一列的问题。
    如 adotable.sort:=column.title.caption+ ' ASC';感谢大家的回复!