这几天碰到个头疼的问题,实在现不明白。
我要用StringGrid做输入,比如用Label1.caption:=StringGrid1.Cells[1,1];(把StringGrid放在一个平时隐藏的窗体上)
可是老出错,输入第一次的时候正确,再输入就不行了StringGrid1.Cells[1,1]一直为空......
不太好叙述明白,我一下面的代码说明://我想说明StringGrid输入时不是直接输入到Cell中的
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
//如果是输入到cell中,那我输入'abc'结果应该是类似于"aabbcc"吧?
StringGrid1.Cells[1,1]:=StringGrid1.Cells[1,1]+key;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
//可是结果是我只能在cell中输入一个字符
Edit1.Text:=StringGrid1.Cells[1,1];
end;我想知道原因,StringGrid是怎么接受输入的?那个给cell传递数据的东西是什么?
可惜vcl的那些代码我看不太懂。那位大哥大姐介绍一下??
谢谢了...........
我要用StringGrid做输入,比如用Label1.caption:=StringGrid1.Cells[1,1];(把StringGrid放在一个平时隐藏的窗体上)
可是老出错,输入第一次的时候正确,再输入就不行了StringGrid1.Cells[1,1]一直为空......
不太好叙述明白,我一下面的代码说明://我想说明StringGrid输入时不是直接输入到Cell中的
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
//如果是输入到cell中,那我输入'abc'结果应该是类似于"aabbcc"吧?
StringGrid1.Cells[1,1]:=StringGrid1.Cells[1,1]+key;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
//可是结果是我只能在cell中输入一个字符
Edit1.Text:=StringGrid1.Cells[1,1];
end;我想知道原因,StringGrid是怎么接受输入的?那个给cell传递数据的东西是什么?
可惜vcl的那些代码我看不太懂。那位大哥大姐介绍一下??
谢谢了...........
(StringGrid1.Controls[0] as TInplaceEdit).SomeProperty:=SomeValue;另外,对于TStringGrid对象的输入,最好使用OnSetEditText事件,而不是OnKeyPress或OnClick事件我以前做程序的时候曾试图用Formula One或其扩展控件做录入界面,但感觉不是很灵活,所以转为使用TStringGrid,但这样必定代码量增加,不过比较灵活!
明白不明白的你已经帮我解决问题了,呵呵,目的已经达到。多谢To:jan2002(阿吉)
谢谢参与,欢迎再来,^_^To:rustle()
不是那样的,不信你试一下我的代码,即使有焦点也不行虽然还不十分明白为什么,不过问题已经解决了,剩下的我自己考虑吧
没人反对把分加给FrameSniper(★吃透技术手册★№2)吧??^_^
self.Hide ;
TLabel(CurEnter).Caption:=sgList.Rows[RW][0];错误现象:
点击Label(第一次),出现输入窗体可以直接键盘输入,如果点击StringList用于输入的行则输入窗体隐藏;隐藏后再点击该Label(第二次)出现输入窗体仍可以直接键盘输入,并且点击的如果不是用于输入的行的话同样正常保存,现象1:但偶尔会在点击其他Label时出现以前输入的内容
现象2:如果点击了用于输入的行,输入窗体不隐藏,变为输入状态,光标一闪一闪的--生气,并且输 入并点击StringGrid其他地方后label显示为空MouseDown中改为下面代码就都正常了(为什么?):
if sgList.Rows[RW][0]='' then
TLabel(CurEnter).Caption :=(sgList.Controls[0] as TInplaceEdit).EditText
else
TLabel(CurEnter).Caption:=sgList.Rows[RW][0];
(sgList.Controls[0] as TInplaceEdit).EditText:='';我考虑是不是第二次点击Label时,焦点在InplaceEdit上,所以点击不隐藏,但为什么输入不能传递到StringGrid中了呢?