安全的写法应该是:
if Assigned(myimg) then
begin
myimg.Free;
myimg := nil;
end;>>它执行后,怎么连主窗体都不见了?
能把你创建它的代码帖出来看看吗?这样问很难估计是什么问题。
if Assigned(myimg) then
begin
myimg.Free;
myimg := nil;
end;>>它执行后,怎么连主窗体都不见了?
能把你创建它的代码帖出来看看吗?这样问很难估计是什么问题。
解决方案 »
- delphi如何读取txt内容并按顺序执行脚本内容
- 请问各位大大,怎么向SQL数据库中添加图片?
- 发分
- 昨天装了ADO2.8,可导致我所有的用ADO连接的程序都运行不了。怎么办?
- 知道一个程序的句柄,怎么才能得到它的内存地址?100分,急
- 2个关于面向对象的问题? 请大家讨论一下!
- 如何编写一个锁定计算机的程序
- Delphi7太夸张了,怎么一下子冒出了这么多的控件,比Delphi5多了一倍还多,请大家谈谈自己的看法,有分!
- 求救(关于发送邮件的smtp服务器需要身份验证)
- 小妹?^_^?捉虫:使用query控件统计记录数的语句?
- 如何更改颜色
- 50分送出去~~说说该什么使用Tfield中onchange onGetText OnSetText onValidate .详细有分
myimg.parent:=form.Panel;
myimg.top:=10;
myimg.left:=10;
谢谢!
myimg:=timage.create(form.Panel);
myimg.parent:=form.Panel;
myimg.top:=10;
myimg.left:=10;
谢谢!
这应该是其他代码引起的。如果想让大家帮你,就将所有代码帖出来巴。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myimg:timage;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(myimg) then
begin
myimg:=timage.create(form1.Panel1);
myimg.parent:=form1.Panel1;
myimg.top:=10;
myimg.left:=10;
try
myimg.Picture.LoadFromFile('a.bmp');//在同一目录放a.bmp
except
end;
end;end;procedure TForm1.Button2Click(Sender: TObject);
begin
if Assigned(myimg) then
begin
myimg.Free;
myimg := nil;
end;end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
Tfrmmain = class(TForm)
Panel: TPanel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmmain: Tfrmmain;implementation{$R *.DFM}procedure Tfrmmain.Button1Click(Sender: TObject);
var myimg:tlabel;
begin
myimg:=tlabel.create(frmmain.Panel);
myimg.parent:=frmmain.Panel;
myimg.top:=10;
myimg.left:=10;
myimg.caption:='aaaa';end;procedure Tfrmmain.Button2Click(Sender: TObject);
var myimg:tlabel;
beginif Assigned(myimg) then
begin
myimg.Free;
myimg:=nil;
end;
end;end.
对不起,请不要见怪
procedure Tfrmmain.Button1Click(Sender: TObject);
和
procedure Tfrmmain.Button2Click(Sender: TObject);
内分别定义,它们就是两个分别独立的局部变量。
要想在在两个过程中都能访问,就要将myimg定义为公用变量。
定义公用变量可以在类内,也可以定义为全局变量。
定义为全局变量的例子见上面。
下面是修改后的类内变量的例子。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
Tfrmmain = class(TForm)
Panel: TPanel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
myimg:tlabel;//在这里定义
public
{ Public declarations }
end;var
frmmain: Tfrmmain;implementation{$R *.DFM}procedure Tfrmmain.Button1Click(Sender: TObject);
//var myimg:tlabel;这句不要
begin
myimg:=tlabel.create(frmmain.Panel);
myimg.parent:=frmmain.Panel;
myimg.top:=10;
myimg.left:=10;
myimg.caption:='aaaa';end;procedure Tfrmmain.Button2Click(Sender: TObject);
//var myimg:tlabel;这句不要
begin if Assigned(myimg) then
begin
myimg.Free;
myimg:=nil;
end;
end;end.