每行的第一列都要有,按扭是隐藏的,只有当ondrawcell时显示出来!
显示出来后,当click后show出一个窗休,当dblclick这个STRINGGRID中一条记录,就会返回值给第一个窗体的第一列的一个单元格。然后close掉这个窗体。

解决方案 »

  1.   

    第一,你可以画进去,第二,将每个字段的buttonstyle 的属性改为cbsEllipsis
    再将OnEditButtonClick事件中写打开该窗体(show),
    在OnEnter事件中判断该窗体是否已经创建,如果有,那就
    Close;如果没有。那就不用管啦!
      

  2.   

    动态生成按钮,
    并将它的位置放在第一列上,
    动态指定时间
    例如:Button1.OnClick:=YourClick; 
    //YourClick是你自己的处理函数,在里面调用YourForm.Show;
    在ondrawcell中显示按钮就可以了,楼主的"当dblclick这个STRINGGRID中一条记录,就会返回值给第一个窗体的第一列的一个单元格。然后close掉这个窗体"
    没看懂
      

  3.   

    也就是StringGrid控件如何连接按钮控件?procedure TFrm_XXXXXXX.StringGrid1DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
       with StringGrid1 do
          BitBtn1.SetBounds(CellRect(12,Row).Left + Left + 2,CellRect(12,Row).Top+Top+2,
              CellRect(12,Row).Right - CellRect(12,Row).Left,
              CellRect(12,Row).Bottom - CellRect(12,Row).Top);
       end;
    这段代码没有看明白!
      

  4.   

    这些代码也没有看明白,不知道为为什么声明按扭数组怎么会报错,那位大哥帮我看一下!uses Types;var
      vButtons: array of TButton;procedure TForm1.FormCreate(Sender: TObject);
    var
      I: Integer;
      vRect: TRect;
    begin
      SetLength(vButtons, StringGrid1.Height div StringGrid1.DefaultRowHeight - 1);
      for I := Low(vButtons) to High(vButtons) do
      begin
        vRect := StringGrid1.CellRect(StringGrid1.ColCount - 1, I);
        vButtons[I] := TButton.Create(StringGrid1);
        vButtons[I].Parent := StringGrid1.Parent;
        OffsetRect(vRect, StringGrid1.Left + 2, StringGrid1.Top + 27);
        vButtons[I].BoundsRect := vRect;
      end;
    end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      I: Integer;
    begin
      for I := Low(vButtons) to High(vButtons) do
        vButtons[I].Caption := IntToStr(StringGrid1.TopRow + I);
    end;
      

  5.   

    不好意思,上面的代码看明白了,要引用一个单元:stdctrls;