如何利用一個string變量,動態創建form,也就是form已經做好,我想通過一個字符串變量它的內容等於該form的name,該如何實現通過這個string來創建和打開這個form
解决方案 »
- 有用过Delphi SWF SDK 这个东西处理Flash的吗?有没有免费版本?
- 关于fastreport的subreportview的问题
- 欢迎D区来了个强人--牧野同志.特此散分迎接...
- 一个线程的问题
- 我同学做的mp3播放器,起步阶段,功能很新颖,老少爷们儿捧个人场啊!!!!进者有分
- "Cannot make a visible wondow model"做一个MDI程序出现的这样的问题是怎么回事?
- 如何编码实现在Win2000下的重启关机等操作?(送100分以上)
- (在线等,马上结帐)请问怎么得到一个文件的行数!(急用!)
- 高分求助!!!!!TGraphiField的疑问
- 如何将某文件以二进制形式付给一个字符串?!谢帮助啊!
- 新手学delphi,请大侠指点初学的基本好书,最好是电子教程,在线等!!
- 不知各位都学delphi 几年了?
var
str : String;
begin
str := 'Form2';
if str = 'Form2' then
begin
Form2 := TForm2.Create(Self);
Form2.Show;
end;
end;
解决方法:
1.设计好你要用到的模板窗体,改为动态创建,
2.在模板窗体内部避免直接引用窗体名,如无法避免,就使用TForm(Sender)来代替窗体名称,
3.在使用时动态创建窗体,
4.改变窗体名称为你定义的字符串,
例:
(假设你已定义全局窗体名变量_FormName:String;)
(模板窗体为TSharedForm)
procedure TForm1.Button1Click(Sender: TObject);
var
sf:TForm
begin
sf:=TSharedForm.Create(Self);
sf.Name:=_FormName;
sf.ShowModal;
end;
我测试通过,不知道你说的是不是这个意思?
begin
RegisterClass(TForm2);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CreateForm('Form2');
end;procedure TForm1.CreateForm(sName: string);
var
cForm: TForm;
sFCName: string;
sFClass: TFormClass;
begin
sFCName := 'T' + sName;
sFClass := TFormClass(FindClass(sFCName));
if sFClass = nil then Exit;
cForm := TForm2.Create(self);
cForm.Show;
end;