关于消息传递的一个问题(50分)

  • 主题发起人 amartapple
  • 开始时间
A

amartapple

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个多窗体程序,程序执行时不自动产生ChildForm,当执行新建时动态生成一个
ChildForm。
代码如下:
ChildForm=new TChildForm(Application);
在程序中还存在一个浮动面板(ToolForm),用浮动面板中的选项来改变ChildForm中
Image的Pen属性
代码如下:
#include <vcl.h>
#pragma hdrstop


#include "ChildForm.h"


void __fastcall TToolForm::EraserButtonClick(TObject *Sender)
{
ChildForm->Image->Canvas->Pen->Color=ToolForm->CColorGrid->BackgroundColor;

}
可是每当EraserButtonClick事件发生,程序就崩溃,我想是我的消息传递出了问题,请
问怎么在这两个窗体中传递消息,或者通过主窗体MainForm传递
 
可能是动态创建窗体的问题,你先把动态创建改为静态的,看看有没问题,然后再修改
 
这应该是其他原因,应该与动态创建窗体无关。
建议一步步跟踪查找,如在
ChildForm->Image->Canvas->Pen->Color中ChildForm是不是真的付值。
 
ChildForm =new TChildForm(Application->MainForm);
ChildForm->Parent =Application->MainForm;
 
我试过了,没有什么问题啊
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGRID"
#pragma resource "*.dfm"
TForm1 *Form1;
TChildForm *ChildForm;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

ChildForm=new TChildForm(Application);//Form1) ;//Application->Form1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ChildForm->Image1->Canvas->Pen->Color=Form1->CColorGrid->BackgroundColor;
}
 
多人接受答案了。
 
顶部