怎么样在stringgird中的cell中插入一个speedbutton?
请前辈指教。可以马上结贴。

解决方案 »

  1.   

    就是象这样:行不行?
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=2096320
      

  2.   

    在ondrawcell中把speedbutton移到cell的位置,不过这样只能显示一个button,
    如果要每行显示的话,就自己画吧!
      

  3.   

    如果只是想用cell来实现button的触发事件试试下面的
    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
       BitBtn1.Visible:=False;
       stringgrid1.Cells[1,1]:='BitBtn1';
       stringgrid1.Objects[1,1]:=BitBtn1;
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
         showMessage('ff');end;procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    begin
        if (acol=1) and (arow=1) then
        (stringgrid1.Objects[1,1] as TBitBtn).OnClick(BitBtn1);
    end;
      

  4.   


        an := TButton.Create(self);
        an.parent:= Panel1;
        an.Name  := 'an1';
        an.Height:= SG_JPZ.DefaultRowHeight;
        an.Width := an.Height;
        an.Left  := SG_JPZ.Left+SG_JPZ.CellRect(SG_JPZ.Selection.Left,SG_JPZ.Selection.Top).Right-an.Height+2;
        an.Top   := SG_JPZ.Top+SG_JPZ.CellRect(SG_JPZ.Selection.Left,SG_JPZ.Selection.Top).Top+2;
        an.Caption := '...';
        an.OnClick := Button1.OnClick;
      

  5.   

    var an: TButton;
    an := TButton.Create(self);
        an.parent:= Panel1;
        an.Name  := 'an1';
        an.Height:= SG_JPZ.DefaultRowHeight;
        an.Width := an.Height;
        an.Left  := SG_JPZ.Left+SG_JPZ.CellRect(SG_JPZ.Selection.Left,SG_JPZ.Selection.Top).Right-an.Height+2;
        an.Top   := SG_JPZ.Top+SG_JPZ.CellRect(SG_JPZ.Selection.Left,SG_JPZ.Selection.Top).Top+2;
        an.Caption := '...';
        an.OnClick := Button1.OnClick;
    以前如此用过,你自己试试,
    看对你有没有帮助,
    一个STRINGGRID只用了一个BUTTON(一个列)