procedure TForm1.CallPro(ProgID:string);
var
base:TBase_0F;
begin
if (ProgID='M0001') then base := TM0001F.Create(self)
else if (ProgID='M0002') then base := TM0002F.Create(self)
else if (ProgID='M0003') then base := TM0003F.Create(self)
else if (ProgID='M0005') then base := TM0005F.Create(self)
else if (ProgID='M0006') then base := TM0006F.Create(self)
else if (ProgID='M0007') then base := TM0007F.Create(self)
else base := nil; if base <> nil then
try
base.ShowModal;
finally
base.Free;
end;end;
我不希望這樣寫,還有其他方法嗎?
var
base:TBase_0F;
begin
if (ProgID='M0001') then base := TM0001F.Create(self)
else if (ProgID='M0002') then base := TM0002F.Create(self)
else if (ProgID='M0003') then base := TM0003F.Create(self)
else if (ProgID='M0005') then base := TM0005F.Create(self)
else if (ProgID='M0006') then base := TM0006F.Create(self)
else if (ProgID='M0007') then base := TM0007F.Create(self)
else base := nil; if base <> nil then
try
base.ShowModal;
finally
base.Free;
end;end;
我不希望這樣寫,還有其他方法嗎?
解决方案 »
- 多线程中接收SOCKET数据,使用非阻塞模式,要保证不丢失数据,该怎么做?
- 用delphi能不能实现将一图片设置为屏幕的背景图片
- 一个弱问题:DELPHI提供了画三角形的函数吗?
- 请教各位大侠,能否介绍一下delphi是如何组织sql语句的,比如说程序中调用ttable.delete,delphi会组织一条delete语句.
- 有关程序中“流程图”的设计,恳请高手请进来帮帮小弟!
- 如何建立这样的活的窗体
- 如何使用vfp建立的表
- 知道进程中的aaa.exe和它的proc_id,如何知道aaa.exe所在的路径?
- 用query查询的小问题。
- 为什么我在Delphi中用Pascal下的read,write会提示错误?而在VC中用C下的scanf,printf输入,输出语句VC就会弹出DOS窗口???
- 关于符号嵌套
- 关于交通信号控制问题
定义:
TOFClass = class of TBase_0F;
aclass : array[0..6] of TOFClass;
在Create方法中:
aclass[0] := TM0001F;
aclass[1] := TM0002F;
.......
aclass[6] := TM0007F;
然后
procedure TForm1.CallPro(ProgID:integer);
begin
if ProgID in [0..6] do
with aclass[ProgID].Create(self) of begin
ShowModal;
Free;
end;
end;呵,,如果觉得不错的话,,把分分给我吧,^-^
MyFormClass: array[1..7] of TFormClass = (TM0001F, TM0002F, TM0003F, TM0004F, TM0005F, TM0006F, TM0007F);
MyString: array[1..7] of string = ('TM0001F', 'TM0002F', 'TM0003F', 'TM0004F', 'TM0005F', 'TM0006F', 'TM0007F');procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
ProgID: string;
Base: TForm;
begin
Base := nil;
ProgID := 'TM0001F';
for I := Low(MyString) to High(MyString) do
if MyString[I] = ProgID then
begin
Base := MyFormClass[I].Create(Self);
Break;
end;
if Base <> nil then
Base.Show;
end;