有关Components的问题,精通C++builder 的请帮忙(100分)

  • 主题发起人 主题发起人 kit
  • 开始时间 开始时间
K

kit

Unregistered / Unconfirmed
GUEST, unregistred user!
有人能把这个DELPHI的程序,改成C++builder 的一个函数程序。
procedure TBasicForm.Enable;
var
I :integer;
begin
for I := 0 to ComponentCount - 1 do begin
if (Components is TEdit) then
TEdit(Components).Enabled := True
else if (Components is TComboBox) then
TComboBox(Components).Enabled := True
end;
 
{
integer i

for(I = 0,i<= ComponentCount - 1,i++){
if (Components is TEdit)
TEdit(Components)->Enabled = True
else if (Components is TComboBox)
TComboBox(Components)->Enabled = True;
}
}
 
for(int i=0;i<Form1->ComponentCount;i++)
{
if(Components->ClassNameIs("TEdit"))
(TEdit *)Components-Enabled=true;
else
if (Components->ClassNameIs("TComboBox"))
(TComboBox*)Components-Enabled=true;

}
 
blackbox的比较正确,我的有一部分没改。
 
for(int i=0;i<Form1->ComponentCount;i++)
{
if(Components->ClassNameIs("TEdit"))
(TEdit *)Components->Enabled=true;
else
if (Components->ClassNameIs("TComboBox"))
(TComboBox*)Components->Enabled=true;

}
这下行了
 
我的最正确
for(int i=0;i<Form1->ComponentCount;i++)
{
if(Components->InheritsFrom(__classid(TEdit)))
((TEdit*)Components)->Enabled=true;
else if (Components->InheritsFrom(__classid(TComboBox)))
((TComboBox*)Components)->Enabled=true;
}

 
来晚了。
我现在也用C++ BUILDER ,刚从DELPHI转用c++ builder的时候,就为这个问题到处问人家
偏偏单位不能上网,不能来这问
 
好象后面几个都对了吧,
 
delphi 中 e is TEdit 的意思,不仅当e是Tedit的时候为true,在e是从 TEdit 继承来的时候
也是true。
bcb中ClassNameIs只实现了上面的第一点,没有实现第二点
而 InheritsFrom 实现了上面的两点,所以和is完全一致
另外blackbox少了一对括号,因为()强制类型的优先级是很低的
 
头晕,Pipi,你竟然是首富...............(斑竹,问题解决了,还没结束之前灌点水没关系吧)
 
不是精通的就不能来???
 
而且是bcb高手,对delphi颇有微词:)
 
to Pipi:我记得刚才还在哪个帖子里说过下次有问题要请教你,这次我又要这样说了。
我刚用CB才几个月,以前用DELPHI快两年了,很多不熟的地方,多多关照。
以前刚用CB不懂的时候,问旁边的同事,他们多是C++高手,可是却都不知道DELPHI
里的用法怎么转换成CB用法,害得我打长途电话向朋友请教
 
for(int i=0;i<Form1->ComponentCount;i++)
{
if(dynamic_cast<TEdit *>(Components))
((TEdit *)Components)->Enabled=true;
else if (dynamic_cast<TComboBox *>(Components))
((TComboBox *)Components)->Enabled=true;
}
 
你可以不用改,BCB可以直接编译Delphi的代码。
 
for(int i=0;i<Form1->ComponentCount;i++)
{
if(Components->ClassNameIs("TEdit"))
(TEdit *)Components->Enabled=true;
else
if (Components->ClassNameIs("TComboBox"))
(TComboBox*)Components->Enabled=true;
}
 
后退
顶部