新建一个工程,
Form1上放一个按钮。
按钮事件:
Form2.RadioGroup1.ItemIndex := 0;
Form2.Show;新建一个Form,放一个RadioGroup,里面填一些内容。运行,点击Form1上按钮,进入Form2.
修改RadioGroup的值,关闭form2。
再次点击form1上按钮:radiogroup的值不再是0,而是上次修改的值!假如form2上有其他控件,关闭Form2前将焦点移动到其他控件上,就不会出现这种情况。应该是radiogroup对radiobutton的封装有些问题。请问如何解决这个问题?
Form1上放一个按钮。
按钮事件:
Form2.RadioGroup1.ItemIndex := 0;
Form2.Show;新建一个Form,放一个RadioGroup,里面填一些内容。运行,点击Form1上按钮,进入Form2.
修改RadioGroup的值,关闭form2。
再次点击form1上按钮:radiogroup的值不再是0,而是上次修改的值!假如form2上有其他控件,关闭Form2前将焦点移动到其他控件上,就不会出现这种情况。应该是radiogroup对radiobutton的封装有些问题。请问如何解决这个问题?
解决方案 »
- 菜鸟求助!!8个数字中任意数字之和小于常数k(数字和尽量接近k),打印组合方案
- 怎么保存 Word 文档?
- 谁教我做发包程序?
- 问!问!问!问!
- 关于delphi文件的编译的问题.我不想用delphi7 的集成环境来编译和生成exe文件,我想通过dos下的命令的方式来编译,然后生成可执行文件,应该
- 大家觉得delphi6开发人员指南这本书如何?
- DELPHI中的控件遮挡问题!
- 大家来谈谈Delphi中使用ADO时经验和常见的一些错误(散分)
- 如何屏闭windows的某些消息.例如wm_copy wm_cut等等?
- 我想将数据表中的数据导入到EXCEL表格中,采用以下方式却不能实现,哪位朋友帮忙指导一下!
- 如何写入剪切板和从剪切板取出内容?
- 怎样取得OpenDialog1中的选择的文件的绝对路径?
请在Form2.OnClose事件中写入:
Action := caFree;
========================procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Form2 := nil;
end;
因为form2可能会被频繁使用。
难道只有在关闭前设置ActiveControl=NIL?
begin
RadioGroup1.ItemIndex := 0;
end;
这样就不必释放form2了。而且保证每次都是你要的
因为我每次显示form2时有可能需要为itemindex设置不同的值。
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Edit1.SetFocus;
end;如果没有,可不可以放一个visible=false的edit控件(方法太笨,别笑我,呵呵)
看来只能用
ActiveControl := NIL;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
RadioGroup1.ItemIndex := 0;
end;
Form2.RadioGroup1.ItemIndex := 0;
后,的确被正确设置为0,但:
Form2.Show;
时,因为RadioGroup中上次被选择的按钮TGroupButton要获得焦点,而TGroupButton获得焦点时被自动选中。所以解决办法有两个:
1、
Form2.Show;
Form2.RadioGroup1.ItemIndex := 0;
2、
with Form2 do
begin
DefocusControl(RadioGroup1, True);
RadioGroup1.ItemIndex := 1;
Show;
end;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————