一个应用软件有一个主窗体(Mainform)和若干个子窗体(form1,form2,form3....),每个子窗体为了设置Edit控件的ImeMode、ImeName属性值以控制是否打开汉字输入都要在该窗体的OnShow()中写上相同的几个语句很是麻烦,如对于Form1而言:
for i := 0 to Form1.ComponentCount - 1 do
if Form1.Components[i].ClassType = TEdit then
begin
if TEdit(Form1.Components[i]).ImeMode = imOpen then
TEdit(Form1.Components[i]).ImeName := '五笔字型'
else if TEdit(Form1.Components[i]).ImeMode = imAlpha then
TEdit(Form1.Components[i]).ImeName := '';
end;不知能否只在Mainform中写一个全局过程/函数,这样只要在每个子窗体的OnShow()中写一条语句调用它(把子窗体的名字作为传递参数)来初始化该子窗体中的所有Edit控件?我自己不会写,还望各位指教。谢谢!
如楼主说所说,写个通用过程
procedure SetAllControlIme(AForm:TForm);
var
i:integer;
begin
for i := 0 to Aform.ComponentCount - 1 do
if Aform.Components[i].ClassType = TEdit then
begin
if TEdit(Aform.Components[i]).ImeMode = imOpen then
TEdit(Aform.Components[i]).ImeName := '五笔字型'
else if TEdit(Aform.Components[i]).ImeMode = imAlpha then
TEdit(Aform.Components[i]).ImeName := '';
end;
end;每个子窗体调用它
SetAllControlIme(self);方法二:
写个基类form,如TBaseForm
通用的过程在TBaseForm里写好,
每个子窗体继承这个TBaseForm