form上放一个cxgrid,一个edit1
鼠标在cxgrid表格上(数据部分不是表头)移动,随着鼠标移动(不要点击)edit1显示鼠标所在列的表头名称

解决方案 »

  1.   

    如果cxgrid表头中没有合并单元格的话,可以在cxgrid的OnMouseMove事件中添加代码控制。
    我没用过cxgrid,所以不知道OnMouseMove事件中的参数。
    如果是X, Y的话那就麻烦了,这就需要计算出每一列的X坐标的起始值和终止值(如果每列长度相同的话,用除法就可以了,然后作加法)。在OnMouseMove事件中,X介于哪一列的起止点,Edit1就显示哪一列的表头。
      

  2.   


    procedure TForm1.cxgrdbtblvwGrid1DBTableView1MouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    var
      fWidth, fADD: Integer;
      iIndex: Integer;
    begin
      with cxgrdbtblvwGrid1DBTableView1 do
      begin
        fADD := 0;
        Controller.Scroll(sbHorizontal, scPosition, fWidth);
        for iIndex := 0 to ColumnCount - 1 do
        begin
          if X + fWidth <= fADD + Columns[iIndex].Width then
          begin
            Caption := Columns[iIndex].Caption;
            Break;
          end else
          begin
            Inc(fADD, Columns[iIndex].Width);
          end;
        end;
      end;
    end;
      

  3.   

    上面的修改一下Caption := Columns[iIndex].Caption;
    //改成 Edit1.Text:= Columns[iIndex].Caption;