比较经典的难题(200分)

  • 主题发起人 主题发起人 liwowo
  • 开始时间 开始时间
L

liwowo

Unregistered / Unconfirmed
GUEST, unregistred user!
1、使用变量值生成对象

如: var
sss:string;

begin
使用sss的值生成一个对象,要怎么写
end;

2、在一个对象生成时,当一个方法,被触发成功后,另外两个方法才能使用(是说最好前面一个方法触发后才出现后面的方法)

希望朋友指点迷经。。。 最好有一小段代码 这样怎么直观些

 
1 delphi不支持

s:string;
s:=new string;
 
都可以实现

等高手来帮你解决吧
 
以下是通过类的名称建立控件的函数:
function CreateObjectInstance(AClassName: string; AParent: TWinControl): TControl;
var
AClass: TControlClass;
AControl: TControl;
begin
AClass := TControlClass(FindClass(AClassName));
AControl := AClass.Create(AParent);
AControl.Parent := AParent;
Result := AControl;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterClasses([TListBox, TButton, TCheckBox]); // 只需要注册一次
CreateObjectInstance('TButton', Self); // 可以使用此函数的返回值
CreateObjectInstance('TCheckBox', Self);
end;

如果需要实现 TForm 类的代码,我可以再写。
 
>> 2、在一个对象生成时,当一个方法,被触发成功后,另外两个方法才能使用(是说最好
>> 前面一个方法触发后才出现后面的方法)
在类中设置一个私有成员变量,方法触发成功后,设置该成员变量为 True,另外两个方法在执行时先判断该成员变量是否为 True,再执行 。
(你的问题没说清楚,我用最简单的方式理解你的问题,相信不是这么简单)。
 
第一个问题不用讨论了。。因为我目前在CSDN上和朋友那里得到的结果都是。不可能;
就是同过一个字符串去当做类名称建立类的实例。目前的答案是不可能。理由是:
变量要先定义。后使用。和你的要求矛盾。或者说。你的要求和 PASCAL 的机制矛盾;其他已知语言一样不可能。
第二个问题:
不知道你的具体功能要求。如果你只是希望在B操作前。希望A先操作过。比如:多线程中的
冲突避免等等。那么 savetime 已经给出方法。如果你是要求。在B操作时。必须执行A操作。那么在你的B操作里。首先A操作。在做B该做的操作就可。不知道我是否理解正确。
 
楼主 是 说 随便 找个 类名 就建一个 对象吧
这个 类名 要是 不出现在 rtti中,可就 没辙了,savetime大虾 的办法也不行了
 
foxbase就可以~ 哈哈~
 
foxbase 哪里来的对象?
 
1.GetClass可以在局限于已知的类当中进行
2....
 
savetime的方法有问题。还不知道类名怎么注册?
 
1.通过使用GetClass可以得到类,前提是已经使用RegisterClass(类)注册类
得到类以后便可以创建对象了:)
2.另两个方法初值设为空,当一个方法触发后给另两个方法负值或使用全局变量
 
后退
顶部