怎样实现在DBGrid每条记录可中加入TButton 控件?

解决方案 »

  1.   

    在OnDrawDataCell事件里面动态创建TButton控件,设置TButton的Parent为DataCell,然后调整TButton的尺寸为DataCell大小
      

  2.   

    DBGrid添加TColumn。
    1.设置Column的ButtonStyle为cbsEllipsis,则该列出现代“...“的按钮,点击是时触发DBGrid的OnEditButtonClick事件。
    2.也可以设置Column的PickList属性,该列将显示一个压缩框。
      

  3.   

    上面的方法是使用DBGrid本身的属性。当然,也可以模仿“插入”真的TButton。
    处理自绘事件(第三列显示Button,文字靠左,上下居中):
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      s:string;
    begin
      with DBGrid1 do
        if DataCol=2 then
          begin
            s:=Column.Field.AsString;
            DrawFrameControl(Canvas.Handle,Rect,DFC_BUTTON,DFCS_BUTTONPUSH);
            SetBkMode(Canvas.Handle,TRANSPARENT);
            Canvas.TextOut(
              Rect.Left+4,
              Rect.Top+(Rect.Bottom-Rect.Top-Canvas.TextHeight('s'))div 2,
              s);
          end;
    end;
      

  4.   

    不知道你要实现什么功能,光从你的要求来看,我倒是觉得应该利用facedge(朝戈) 的方法来实现。
      

  5.   

    勘误:
    Canvas.TextOut(
              Rect.Left+4,
              Rect.Top+(Rect.Bottom-Rect.Top-Canvas.TextHeight(s))div 2,
              s);