2012-02-16 62 views
0

我有2个Tframes和一个添加按钮。我试图在按下按钮时将一个tframe添加到另一个上。但因为我的代码似乎无法工作。它不会像它想象的那样添加框架。没有错误或运行,它编译和运行,但是当我按下按钮时,它什么都不做。当我将一个tframe添加到滚动框时,我得到了它的工作,我所做的只是改变了要添加的tframe的位置。对于TFrame2在运行时将Tframe添加到另一个Tframe

void __fastcall TFrame2::AddFrame() 
{ 
    int temp = 0; 
    TFrame1* NewFrame1 = new TFrame1(this); 
    NewFrame1 ->Parent=this; 

    TComponentEnumerator * ParentEnum = GetEnumerator(); 

    while(ParentEnum->MoveNext()) 
    { 
     temp++; 
    } 

    NewFrame1 ->SetIndex(temp); 
    NewFrame1 ->Name = "Frame" + IntToStr(temp); 
    NewFrame1 ->Top = (NewFrame1 ->Height) * (temp); 
} 

代码,这是我使用的TFrame1本身的代码

void __fastcall TFrame1 ::SetIndex(int temp) 
{ 
    this->temp= temp; 
} 

int __fastcall TFrame1 ::GetIndex() 
{ 
    return this->temp; 
} 

律BG信息:我必须TFRAME添加到另一个TFRAME的原因,是这样我就可以将一组组件添加到另一组组件中,我不知道有任何其他方式来执行它。稍后我将tframe2添加到主窗体上。

+0

你需要更具体。 “我的代码似乎无法工作”给我们绝对没有什么可继续。如果事情不奏效,你需要具体说明他们不能如何工作,包括你得到的任何特定的错误消息。请记住,我们无法从这里阅读您的想法或屏幕,所以我们唯一的信息就是您在问题中给我们的信息。 – 2012-02-16 15:25:24

+0

顺便说一句,'TFrame1 * NewFrame1 =新的TFrame1(TFrame2);'是错误的。将传递的参数('Owner')从'TFrame2'更改为'this'。 'TFrame2'是一个类型,你需要将指针传递给引用。 – 2012-02-16 15:26:58

+0

我向y添加了更多的细节代码不起作用。它只是简单地运行没有错误,但没有添加tframe。我已经尝试过'this'而不是TFrame2,同样的事情,代码运行,但是当我按下按钮 – livelaughlove 2012-02-16 17:54:50

回答

0

鉴于您显示的代码,唯一可能出错的是如果您将子框架的Top属性设置为超过其父框架的Height属性的值,以便您不会看到子框架即使它存在于内存中也会出现在屏幕上。

+0

时,添加了tframe。我再次检查了所有内容,但事实并非如此,但它仍然无法正常工作。我不太清楚为什么。我只会尝试以不同的方式做到这一点。感谢你的贡献。 – livelaughlove 2012-02-21 17:11:56

+0

我终于把这段时间放在一边后,终于弄清楚了什么是错的。这与我的代码无关。它只是C++ Builder的错误。每次我进入设计视图进行调整时,我都必须回到我的代码中,并注释掉winproc的内容,保存它,然后取消注释winproc的内容,然后再保存它,然后才能正常工作。我不太确定,但它解决了问题。 – livelaughlove 2012-03-02 19:00:38

+0

你指的是什么错误?我从来没有做过你所描述的事情。 – 2012-03-02 23:42:35