请问在Delphi中,为什么点击stringgrid中的Button,它的click事件不被响应呢?
我在stringgrid中动态的加Button~代码如下:leftPos:=0;topPos:=0;fori:=0to9doleftPos:=leftPos+self.s...
我在stringgrid中动态的加Button~代码如下:
leftPos:= 0;
topPos := 0;
for i:= 0 to 9 do
leftPos:=leftPos+self.strngrdjhsz.ColWidths[i]+1;
for i:= 0 to ARow-1 do
topPos :=topPos+self.strngrdjhsz.RowHeights[i]+1;
btnaddJQ.Left := strngrdjhsz.Left+leftPos+2;
btnaddJQ.Top := strngrdjhsz.Top+topPos+2;
btnaddJQ.Width := strngrdjhsz.ColWidths[10]+1;
btnaddJQ.Height := strngrdjhsz.RowHeights[aRow];
btnaddJQ.Visible:= True;
运行的时候,点击某一行的单元格,在那一行的第10列式可以显示出来按钮的,但是点击那个按钮的时候不仅不会触发它的click事件,反而按钮消失了~
实在找不出原因,所以上来问问各位高手!谢谢!
按钮是已经创建好的,跟stringgrid在一个panel里面,运行时只是动态的移动它的位置。
button的click事件我已经写好了。但是就是不触发。 展开
leftPos:= 0;
topPos := 0;
for i:= 0 to 9 do
leftPos:=leftPos+self.strngrdjhsz.ColWidths[i]+1;
for i:= 0 to ARow-1 do
topPos :=topPos+self.strngrdjhsz.RowHeights[i]+1;
btnaddJQ.Left := strngrdjhsz.Left+leftPos+2;
btnaddJQ.Top := strngrdjhsz.Top+topPos+2;
btnaddJQ.Width := strngrdjhsz.ColWidths[10]+1;
btnaddJQ.Height := strngrdjhsz.RowHeights[aRow];
btnaddJQ.Visible:= True;
运行的时候,点击某一行的单元格,在那一行的第10列式可以显示出来按钮的,但是点击那个按钮的时候不仅不会触发它的click事件,反而按钮消失了~
实在找不出原因,所以上来问问各位高手!谢谢!
按钮是已经创建好的,跟stringgrid在一个panel里面,运行时只是动态的移动它的位置。
button的click事件我已经写好了。但是就是不触发。 展开
2个回答
展开全部
按钮是你在运行时创建的么?需要设置按钮的parent属性,另外,需要事先写一个类似的
procedure ButtonClick(Sender: TObject);事件函数,并且把它赋值给你这个动态创建的按钮:
btnAddJQ.onclick := ButtonClick;
==============第二次回答===========
哦,这次看懂了。我做了个实验如下,没发现你说的问题啊
procedure TForm1.btnaddJQClick(Sender: TObject);
begin
ShowMessage('Hi!');
end;
procedure TForm1.strngrdjhszSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
leftPos, topPos, i: Integer;
begin
leftPos := 0;
topPos := 0;
for i := 0 to strngrdjhsz.ColCount - 1 do
leftPos := leftPos + self.strngrdjhsz.ColWidths[i] + 1;
for i := 0 to ARow - 1 do
topPos := topPos + self.strngrdjhsz.RowHeights[i] + 1;
btnaddJQ.Left := strngrdjhsz.Left + leftPos + 2;
btnaddJQ.Top := strngrdjhsz.Top + topPos + 2;
btnaddJQ.Width := strngrdjhsz.ColWidths[10] + 1;
btnaddJQ.Height := strngrdjhsz.RowHeights[ARow];
btnaddJQ.Visible := True;
end;
procedure ButtonClick(Sender: TObject);事件函数,并且把它赋值给你这个动态创建的按钮:
btnAddJQ.onclick := ButtonClick;
==============第二次回答===========
哦,这次看懂了。我做了个实验如下,没发现你说的问题啊
procedure TForm1.btnaddJQClick(Sender: TObject);
begin
ShowMessage('Hi!');
end;
procedure TForm1.strngrdjhszSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
leftPos, topPos, i: Integer;
begin
leftPos := 0;
topPos := 0;
for i := 0 to strngrdjhsz.ColCount - 1 do
leftPos := leftPos + self.strngrdjhsz.ColWidths[i] + 1;
for i := 0 to ARow - 1 do
topPos := topPos + self.strngrdjhsz.RowHeights[i] + 1;
btnaddJQ.Left := strngrdjhsz.Left + leftPos + 2;
btnaddJQ.Top := strngrdjhsz.Top + topPos + 2;
btnaddJQ.Width := strngrdjhsz.ColWidths[10] + 1;
btnaddJQ.Height := strngrdjhsz.RowHeights[ARow];
btnaddJQ.Visible := True;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询