运行中创建的mdi窗体的控制问题(100分)

  • 主题发起人 主题发起人 lxmzm
  • 开始时间 开始时间
L

lxmzm

Unregistered / Unconfirmed
GUEST, unregistred user!
我在编写程序时,用到了mdi窗体,这些mdi窗体是在运行中创建的,我想保存该窗体的位置(相对与主窗体)
利用ini文件,但出现错误,同时由于主窗体无菜单,当MDI窗体最大化后,如何得到mdi窗体的handel,用sengmessage 使
mdi窗体恢复!

部分代码:

fmainform (unit1.pas)设置fsMDIForm ,其上有bottom1 ,建立xx.ini文件,加入uses unit2
add(unit2.pas)设置fsMDIChild,加入uses unit1
两窗体加入了 inifiles单元

bottom1
var tmp:tadd;
begin
tmp:=tadd.create(self); //运行中动态创建
...


tadd中,在close事件中使用
inifile.write('ss','sd',add.left) 出现错误
 
请将错误情况描述清楚,我认为是不会出错
 
本人在窗口创建中用如下代码:
var
IniFile: TIniFile;
begin
MainDir:=ExtractFileDir(Application.Exename);

IniFile:=TIniFile.Create(MainDir+'/Config.ini');
try
if not FileExists(MainDir+'/Config.ini') then
begin
MainForm.Top:=1;
MainForm.Left:=1;
MainForm.Height:=450;
MainForm.Width:=636;

IniFile.WriteInteger('MainForm','WindowStateMax',0);
IniFile.WriteInteger('MainForm','Top',1);
IniFile.WriteInteger('MainForm','left',1);
IniFile.WriteInteger('MainForm','Height',450);
IniFile.WriteInteger('MainForm','Width',636);
end
else
begin
if IniFile.ReadInteger('MainForm','WindowStateMax',1)=0 then
begin
MainForm.Top:=IniFile.ReadInteger('MainForm','Top',1);
MainForm.Left:=IniFile.ReadInteger('MainForm','left',1);
MainForm.Height:=IniFile.ReadInteger('MainForm','Height',450);
MainForm.Width:=IniFile.ReadInteger('MainForm','Width',636);
end
else
begin
MainForm.WindowState:= wsMaximized;
end;
end;
finally
IniFile.Free;
end;
end;

在窗口关闭中用如下代码:
var
IniFile: TIniFile;
begin
{保存当前的状态到INI文件}
IniFile:=TIniFile.Create(MainDir+'/Config.ini');
if MainForm.WindowState=(wsNormal) then
begin
IniFile.WriteInteger('MainForm','WindowStateMax',0);
IniFile.WriteInteger('MainForm','Top',MainForm.Top);
IniFile.WriteInteger('MainForm','left',MainForm.Left);
IniFile.WriteInteger('MainForm','Height',MainForm.Height);
IniFile.WriteInteger('MainForm','Width',MainForm.Width);
end
else
IniFile.WriteInteger('MainForm','WindowStateMax',1);
IniFile.Free;
end;
 
我想获得的是mdi窗体最大化等操作方法,不是主窗体
 
form.formstate:=wsmaximized;
 
lxmzm:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
请继续或结束
 
>>inifile.write('ss','sd',add.left)
~~~~
inifile.write('ss','sd',self.left)
 
多人接受答案了。
 
后退
顶部