怎样用窗体做参数

yellowbb 2001-05-16 03:43:00
类似下面的代码怎样包装成过程或函数。
if not assigned(form1) then
Application.CreateForm(Tfrom1,form1);
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowbb 2001-08-21
  • 打赏
  • 举报
回复
最后我是这样解决的,请大家指教。
procedure checkform(tcom: tcomponentclass; tf: tform);
begin
if not assigned(tf) then
application.CreateForm(tcom,tf);
tf.Show ;
end;

另外:在delphi里面好像有个screen,他有包含form,但不知怎样来解决这个问题
光明山人 2001-08-21
  • 打赏
  • 举报
回复
写是可以,不过调用时麻烦,不能直接用其它TForm派生类的变量调用了,如:

var Form1: TForm1;
CheckFormCreate( TForm1, Form1 );
编译时会报错的,因为Form1是TForm1类对象,在用var参数时,需要精确的变量类型(派生类型的变量也不行),当然可能可以用CheckFormCreate( TForm1, TForm(Form1) );不过就别扭了。
eastxiang 2001-08-21
  • 打赏
  • 举报
回复
hao
光明山人 2001-08-21
  • 打赏
  • 举报
回复
你这样的写法,tf的值是传不回去的。

Screen.Forms包含了在应用程序中创建的所有Form
xzgyb 2001-08-18
  • 打赏
  • 举报
回复
to agui
想问一下
procedure CheckFormCreate( AFormClass: TFormClass; var AForm: TForm );
begin
if not Assigned(AForm) then
AForm := AFormClass.Create( Application );
end;
直接这样行吗










torble 2001-08-18
  • 打赏
  • 举报
回复
呵呵~好
光明山人 2001-08-17
  • 打赏
  • 举报
回复
你运气真好,碰到贵人了。:)

procedure CheckFormCreate( AFormClass: TFormClass; var AForm );
var
BForm: TForm absolute AForm;
begin
if not Assigned(BForm) then
BForm := AFormClass.Create( Application );
end;

TFormClass叫类引用,它的值就是类,用来创建类实例。注意AForm不能有类型,要不就不通用了(不能传不同的Form变量)。absolute是定义同一地址上的不同类型的变量,也就是变身。BForm改变了,AForm的值跟着变。


sun07 2001-08-17
  • 打赏
  • 举报
回复
这实际上是解决tcomponentclass能识别的TForm,我想了两种方法(还没解决):
1、一是通过字符串( FormUserDefinedName:string):Boolean

2、一是通过tcomponentclass( f:tcomponentclass; s:TForm1 ):Boolean

Sun07@163.com


yellowbb 2001-05-16
  • 打赏
  • 举报
回复
我是想判断该窗体是否已创建,如没有就创建,如已创建就显示出来。因为有多个窗体,所以想定义一个函数来调用。
application.createform中要用到的两个参数有什么不同?还有,tcomponentclass到底是什么类。
XGZ 2001-05-16
  • 打赏
  • 举报
回复
type
TForm1 = class(TForm)
.....
procedure setform( f:tcomponentclass; s:TForm1 );
Apollo47 2001-05-16
  • 打赏
  • 举报
回复

var FForm:TForm1;
procedure SetForm( value:TForm1);
begin
if FForm<>value then
FForm.Assign(value);
end;
yellowbb 2001-05-16
  • 打赏
  • 举报
回复
tform1和form1参数的类型怎样传
procedure setform( f:tcomponentclass; s:tform);这样有错。
请详细点

chonglei 2001-05-16
  • 打赏
  • 举报
回复
将窗体的类名当作参数传进去不就行了

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧