我在form1的AdvStrgrid1中的cells[1,1]单元格添加了EditBtn可编辑按钮!点击这个按钮会弹出另一个窗体Form2,上面也有一个AdvStrgrid1。 现在我想在关闭Form2的时候返回一个计算结果给form1.AdvStrgrid1.cells[1,1]。
例如:
form2的Onclose事件里写:
form1.AdvStrgrid1.cells[1,1]:=inttostr(strtoint(form2.AdvStrgrid1.cells[5,5])+
strtoint(form2.AdvStrgrid1.cells[4,5]));
我是这样去做的,但是在关闭Form2后,窗体1的AdvStrgrid1的单元格cells[1,1]里不会显示结果!是不是有EditBtn类型的单元格赋值语句不是这样写的???求教!!万分感谢了!!!小弟分不多,就这么点了。
例如:
form2的Onclose事件里写:
form1.AdvStrgrid1.cells[1,1]:=inttostr(strtoint(form2.AdvStrgrid1.cells[5,5])+
strtoint(form2.AdvStrgrid1.cells[4,5]));
我是这样去做的,但是在关闭Form2后,窗体1的AdvStrgrid1的单元格cells[1,1]里不会显示结果!是不是有EditBtn类型的单元格赋值语句不是这样写的???求教!!万分感谢了!!!小弟分不多,就这么点了。
strtoint(form2.AdvStrgrid1.cells[4,5]));可以尝试调一下
procedure TForm1.AdvStringGrid1GetEditorType(Sender: TObject; ACol,
ARow: Integer; var AEditor: TEditorType);
begin
if acol=1 then
AEditor:=ededitbtn;
end;
在onEllipsClick事件里写:
procedure TForm1.AdvStringGrid1EllipsClick(Sender: TObject; ACol,
ARow: Integer; var S: String);
begin
if acol=1 then
form2.ShowModal;
end;
然后在Form2的onclose写:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.advstringgrid1.Cells[1,1]:=form2.advstringgrid1.Cells[1,1];
end;
然后我运行后,单机FOrm1的grid的[1,1]单元格里的editbtn,在Form2显示后,在单元格[1,1]里输入‘11’,关闭窗体,结果FOrm1的grid的[1,1]单元格没有变化。但是我把窗体2的赋值语句改为:
form1.advstringgrid1.Cells[2,1]:=form2.advstringgrid1.Cells[1,1];或者其他
form1.advstringgrid1.Cells[x,1]:=form2.advstringgrid1.Cells[1,1];
只要不是你当前单机的这个单元格,那么关闭窗体2后,就会在窗体1的单元格出现‘11’!说明一个问题,advgrid里当前操作的editbtn单元格不能返回值,别的就可以!!大侠帮忙,看看有什么解决办法!!!万分感谢啊!!!!!!!!!!
上面那个打错了一个,应该是当我把窗体2的赋值语句改为:引用 1 楼 zhnglicho 的回复:
赋值方式没问题,但我觉得写在onclose事件中不太合适,单击editbtn时,用form.ShowModal,再在ShowModal方法后form1.AdvStrgrid1.cells[1,1]:=inttostr(strtoint(form2.AdvStrgrid1.cells[5,5])+
strtoint(form2.AdvStrgrid1.cells[4,5]));可以尝试……你说的这个我试了,不行! 我现在做了一个简单的测试,就是在GetEditorType事件里写
procedure TForm1.AdvStringGrid1GetEditorType(Sender: TObject; ACol,
ARow: Integer; var AEditor: TEditorType);
begin
if acol=1 then
AEditor:=ededitbtn;
end;
在onEllipsClick事件里写:
procedure TForm1.AdvStringGrid1EllipsClick(Sender: TObject; ACol,
ARow: Integer; var S: String);
begin
if acol=1 then
form2.ShowModal;
end;
然后在Form2的onclose写:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.advstringgrid1.Cells[1,1]:=form2.advstringgrid1.Cells[1,1];
end;
然后我运行后,单机FOrm1的grid的[1,1]单元格里的editbtn,在Form2显示后,在单元格[1,1]里输入‘11’,关闭窗体,结果FOrm1的grid的[1,1]单元格没有变化。但是我把窗体2的赋值语句改为:
form1.advstringgrid1.Cells[1,2]:=form2.advstringgrid1.Cells[1,1];或者其他
form1.advstringgrid1.Cells[1,x]:=form2.advstringgrid1.Cells[1,1];
只要不是你当前单机的这个单元格,那么关闭窗体2后,就会在窗体1的单元格出现‘11’!
引用 1 楼 zhnglicho 的回复:
赋值方式没问题,但我觉得写在onclose事件中不太合适,单击editbtn时,用form.ShowModal,再在ShowModal方法后form1.AdvStrgrid1.cells[1,1]:=inttostr(strtoint(form2.AdvStrgrid1.cells[5,5])+
strtoint(form2.AdvStrgrid1.cells[4,5]));可以尝试……
上面那个打错了一个,应该是当我把窗体2的赋值语句改为:
form1.advstringgrid1.Cells[1,2]:=form2.advstringgrid1.Cells[1,1];或者其他
form1.advstringgrid1.Cells[1,x]:=form2.advstringgrid1.Cells[1,1];
只要不是你当前单机的这个editbtn单元格,那么关闭窗体2后,就会在窗体1的单元格出现‘11’!
procedure TForm1.AdvStringGrid1EllipsClick(Sender: TObject; ACol,
ARow: Integer; var S: String);
begin
if acol=1 then
begin
form2.ShowModal;
S:=form2.advstringgrid1.Cells[1,1];
end;
end;