有关With do 语句的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 xsj_by
  • 开始时间 开始时间
X

xsj_by

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一段创建窗口的代码:
 with TForm1.create do
begin
setForm(这里我要传入TForm1); 
...//其它一些对Tform1的操作,代码较多
end;
上面的函数SetForm主要对传入的窗口设置各个组件的Caption,我应该怎么把With TForm1.Create do 里面的TForm1传递到SetForm中呢?
(另外,我不希望用form1 := TForm.create;这种形式来创建窗口)
 
我写了一段创建窗口的代码:
 with TForm1.create do
begin
setForm(这里我要传入TForm1); 
...//其它一些对Tform1的操作,代码较多
end;
上面的函数SetForm主要对传入的窗口设置各个组件的Caption,我应该怎么把With TForm1.Create do 里面的TForm1传递到SetForm中呢?
(另外,我不希望用form1 := TForm.create;这种形式来创建窗口)
 
self?没怎么弄明白您的意思。
 
对啊就是用Self,它就是当前类的实例引用
 
var
aform:TForm1;
begin
if aform=nil then aform:=Tform1.create;
with aform do
begin
setform(aform);
.....
end
end;
 
我希望 with TForm1.create do 是这种形式
 
窗体没有属主,没有引用变量,如何释放?这样启不是会形成内存泄漏?
var
aform:TForm1;
begin
with aform:=TForm1.create do
.....
 
楼上的说的是对的,没有你这样使用的!
 
呵呵,给你一个没有意义的解决方案, 为了楼主偷懒可以少写var frm: TForm1这一句:
with TForm1.Create(nil) do
begin
asm
MOV EDX, EAX
CALL TForm1.SetForm
end;
...//其它一些对Tform1的操作,代码较多
end;
 
我一般这样用,不知道有没有问题
//PublicUtils
TFormClass = class of TForm;
procedure CreateAndShowModal(frmClass: TFormClass);
var
f: TForm;
begin
f := frmClass.Create(nil);
try
f.ShowModal;
finally
f.Free;
end;
end;
//使用
uses PublicUtils;
procedure TForm1.btn1Click(Sender: TObject);
begin
PublicUtils.CreateAndShowModal(TForm2);
end;
 
后退
顶部