K kingbenz Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-01 #1 急!可不可以通過改變一個字符串變量,通過它的值控制不同的Form?
S shenloqi Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-01 #2 应该是可以的,你说的不是很明确。 我理解的是这样: procedure TForm1.FormCreate(Sender: TObject); var S: string; begin S := Name; if Application.FindComponent(S) <> nil then ShowMessage(''); end;
应该是可以的,你说的不是很明确。 我理解的是这样: procedure TForm1.FormCreate(Sender: TObject); var S: string; begin S := Name; if Application.FindComponent(S) <> nil then ShowMessage(''); end;
B beta Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-01 #3 假设你已经创建了两个窗口,名字为 Form1, Form2 var FormStr: string; i: Integer; begin for i := 1 to 2do TForm(Application.FindComponent('Form' + IntToStr(i))).Caption := IntToStr(i); end;
假设你已经创建了两个窗口,名字为 Form1, Form2 var FormStr: string; i: Integer; begin for i := 1 to 2do TForm(Application.FindComponent('Form' + IntToStr(i))).Caption := IntToStr(i); end;
K kingbenz Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-02 #4 兩位基本明白我的意思,我的難題是如果有很多FORM需要動態創建,要創建的FORM名保存在 變量S處,程序該如果實現?
F forgot2002 Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-02 #5 With TForm.create(Application)do Name:=S;
S Sachow Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-02 #7 如果是不同类型的Form,或者其内容比较复杂时,用ReadComponent或ReadComponentRes可以 从资源文件(*.dfm或其它的Delphi/CB窗体文件格式的文件)中读出窗体。注意:目标窗体 最好是空的,不能有任何与资源文件中的控件同名的控件。这样你就可以先动态分创建一个 空的窗体,然后通过上面那两个函数其中的一个,将资源文件中的内容读出来,这时这个动 态创建的窗体上显示的就是你事先编辑好的内容了。
如果是不同类型的Form,或者其内容比较复杂时,用ReadComponent或ReadComponentRes可以 从资源文件(*.dfm或其它的Delphi/CB窗体文件格式的文件)中读出窗体。注意:目标窗体 最好是空的,不能有任何与资源文件中的控件同名的控件。这样你就可以先动态分创建一个 空的窗体,然后通过上面那两个函数其中的一个,将资源文件中的内容读出来,这时这个动 态创建的窗体上显示的就是你事先编辑好的内容了。
K kingbenz Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-02 #8 可不可以簡單一點,就是FORM名保存在變量處,現要根據變量動態創建FORM,當然每個FORM 是不同的。
X xianjun Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-02 #9 用RegisterClass与FindClass函数就可以实现你的要求 在每个Form的初始化处RegisterClass(如RegisterClass(TFormTest)) 然后调用的时候这样用 var AFormClass: string; //这就是你说的字符串 begin AFormClass := 'TFormTest'; //你可以在此改变不同的类名 with TForm(FindClass(AFormClass)).Create(Self)do try ShowModal; finally Release; end; end;
用RegisterClass与FindClass函数就可以实现你的要求 在每个Form的初始化处RegisterClass(如RegisterClass(TFormTest)) 然后调用的时候这样用 var AFormClass: string; //这就是你说的字符串 begin AFormClass := 'TFormTest'; //你可以在此改变不同的类名 with TForm(FindClass(AFormClass)).Create(Self)do try ShowModal; finally Release; end; end;
X xie_p_f Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-03 #10 思路: 1,生成FORM时在一个全局模块中注册自己的HANDLE 和 CAPTION(用来标识用,唯一就行) 2.要调用时先从全局模块查找被调用方的HANDLE。 3.PostMessage(theHandle,YOU_MSG,,); 4.form的类中处理该消息。
思路: 1,生成FORM时在一个全局模块中注册自己的HANDLE 和 CAPTION(用来标识用,唯一就行) 2.要调用时先从全局模块查找被调用方的HANDLE。 3.PostMessage(theHandle,YOU_MSG,,); 4.form的类中处理该消息。