如何在stringgrid的单元格中加入按钮? 每行的第一列都要有,按扭是隐藏的,只有当ondrawcell时显示出来!显示出来后,当click后show出一个窗休,当dblclick这个STRINGGRID中一条记录,就会返回值给第一个窗体的第一列的一个单元格。然后close掉这个窗体。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一,你可以画进去,第二,将每个字段的buttonstyle 的属性改为cbsEllipsis再将OnEditButtonClick事件中写打开该窗体(show),在OnEnter事件中判断该窗体是否已经创建,如果有,那就Close;如果没有。那就不用管啦! 动态生成按钮,并将它的位置放在第一列上,动态指定时间例如:Button1.OnClick:=YourClick; //YourClick是你自己的处理函数,在里面调用YourForm.Show;在ondrawcell中显示按钮就可以了,楼主的"当dblclick这个STRINGGRID中一条记录,就会返回值给第一个窗体的第一列的一个单元格。然后close掉这个窗体"没看懂 也就是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;这段代码没有看明白! 这些代码也没有看明白,不知道为为什么声明按扭数组怎么会报错,那位大哥帮我看一下!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; 不好意思,上面的代码看明白了,要引用一个单元:stdctrls; 如何才能更改数据库的当前记录呢? 客户要求在程序中实现对票据的自行调整,如何做? 把card表中id=1的cardname、cardbank等的内容显示到各个edit中,请大家看看这段代码有什么错吗? 大虾们,问一简单个问题 .dcu问题 急问三层的问题,请帮忙!!!! 地址错误??? 我是一个刚刚起步的初学者,哪位师父能带带我,给我指路,定终生不忘 有没有人知道哪儿有“刘艺”《delphi5企业级解决方案及应用剖析》的完整原代码? 怎么在客户端发送一个请求,通过服务器程序响应返回一个记录集? 列位大哥,类似下图这样的列表框怎么实现, 为什么读取不出完整的路径???
再将OnEditButtonClick事件中写打开该窗体(show),
在OnEnter事件中判断该窗体是否已经创建,如果有,那就
Close;如果没有。那就不用管啦!
并将它的位置放在第一列上,
动态指定时间
例如:Button1.OnClick:=YourClick;
//YourClick是你自己的处理函数,在里面调用YourForm.Show;
在ondrawcell中显示按钮就可以了,楼主的"当dblclick这个STRINGGRID中一条记录,就会返回值给第一个窗体的第一列的一个单元格。然后close掉这个窗体"
没看懂
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;
这段代码没有看明白!
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;