var k1:TForm; SomeWindow:String; begin if SomeWindow='thisisatest' then begin k1:=thisisatest.create(application); k1.name:=somewindow; k1.show . end if somewindows=.... end;
你完全可能通过类名实现这样的功能: var oForm :TForm; FormArray :array[0..3] of TFormClass=(TfrmA,TfrmB,TfrmC,TfrmD); FormName :array[0..3] of string=('名1','名2','名3','名4');用查字典的方法找到相应的index(不用我说了吧),然后: oFrom := FormArray[i].Create(Application); oForm.ShowModal; .....
嘿嘿,俺刚学的:Type TFormRef = class TForm; var FormRef: TFormRef; FormInstance: TForm; FormRef:= FindClass('你从数据库中取出的String'); FormInstance := FormRef.Create(nil); FormInstance.ShowModal;FormRef是类的引用,FormInstance是实例的引用。必须说明这不是一个良好的设计模式。
阿,要改一下,把 Type TFormRef = class TForm; 改成 Type TFormRef = class of TForm;sorry //blush
FormRef:= FindClass('你从数据库中取出的String'); 应改成: FormRef:= TFormRef(FindClass('Form3')); 吧,否则编译通不过!但还是不行,提示Class Form3 not found是否意味Form3要已经创建了,这样FindClass才找得到?
begin
test(form1);end;
这是什么呀?窗口名是一个字符串,是从数据库中取出的!!!如何通过该字符串创建窗口?
k1:TForm;
SomeWindow:String;
begin
if SomeWindow='thisisatest' then
begin
k1:=thisisatest.create(application);
k1.name:=somewindow;
k1.show
.
end
if somewindows=....
end;
var
oForm :TForm;
FormArray :array[0..3] of TFormClass=(TfrmA,TfrmB,TfrmC,TfrmD);
FormName :array[0..3] of string=('名1','名2','名3','名4');用查字典的方法找到相应的index(不用我说了吧),然后:
oFrom := FormArray[i].Create(Application);
oForm.ShowModal;
.....
TFormRef = class TForm;
var
FormRef: TFormRef;
FormInstance: TForm; FormRef:= FindClass('你从数据库中取出的String');
FormInstance := FormRef.Create(nil);
FormInstance.ShowModal;FormRef是类的引用,FormInstance是实例的引用。必须说明这不是一个良好的设计模式。
Type
TFormRef = class TForm;
改成
Type
TFormRef = class of TForm;sorry //blush
应改成:
FormRef:= TFormRef(FindClass('Form3'));
吧,否则编译通不过!但还是不行,提示Class Form3 not found是否意味Form3要已经创建了,这样FindClass才找得到?
FormRef是类的引用,FormInstance是对象的引用。
缺省情况下Form实例对应的类名应该是T + 对象名针对你的情况,把
FormRef := TFormRef(FindClass('Form3'));
改成
FormRef := TFormRef(FindClass('TForm3'));
应该就可以了。
choose case '窗口名'
case 'as'
open(w_one)
case 'two'
open(w_two)
end choose何况,PB也要先建立窗口,才可以
w_old ls_window
open(w_old,ls_window)
"在PB中,能够以窗口的名称,如‘w_main’(注意:这是一个字符串),不知在Delphi中如何实现?"这句搞不懂??????????
问题提出总让人觉得说的不连贯,兄弟,以后拜托说清楚点
可能与我一样,不太重视语文吧?哈哈....
建一个窗口W_mian作为基类,其他的窗口从他继承,则w_1 w_main //定义一个W_main类型的变量w_1代表所有继承的窗口
open(w_1, ls_winname)
这我已经用过很多年了,没一点问题的tangwen829(吻工资) ,我这句话写掉了几个字,呵呵,应该是:
在PB中,能够以窗口的名称,如‘w_main’(注意:这是一个字符串)打开该窗口,不知在Delphi中如何实现?