|
동작은 잘 하는데 ... 에러가 없을 것 이라는 확신은 없습니다.
TForm *pContentForm;
TFormClass pFormClass;
TBitBtn *pBtn = (TBitBtn*) Sender;
try {
switch (pBtn->Tag) {
case 1:
pFormClass = FormCableTree->ClassType();;
break;
case 2:
pFormClass = FormMapTree->ClassType();
break;
default:
pFormClass = FormCableTree->ClassType();
break;
}
if (PanelContent->ControlCount == 0 || (dynamic_cast<TForm*>(PanelContent->Controls[0])->ClassType() != pFormClass)) {
// 내용을 비운다
if (PanelContent->ControlCount > 0) {
delete PanelContent->Controls[0];
}
if (pFormClass) {
Application->CreateForm(pFormClass, &pContentForm);
pContentForm->BorderStyle = bsNone;
pContentForm->Hide();
pContentForm->Parent = PanelContent;
pContentForm->Align = alClient;
pContentForm->Show();
}
}
}
__finally {
}
초보 님이 쓰신 글 :
: 아래와 같은 델파이코드를 CBuilder 코드로 바꿔주시면 감사하겠습니다.
:
: procedure TMainForm.DemoButtonClick(Sender: TObject);
: var
: NewDemoClass: TFormClass;
: NewDemo: TForm;
:
: begin
: case (Sender as TSpeedButton).Tag of
: 0:
: NewDemoClass := TSpeedForm;
: 1:
: NewDemoClass := TGeneralForm;
: 2:
: NewDemoClass := TPropertiesForm;
: 3:
: NewDemoClass := TVisibilityForm;
: 5:
: NewDemoClass := TGridForm;
: 6:
: NewDemoClass := TDrawTreeForm;
: 7:
: NewDemoClass := TAlignForm;
: 8:
: NewDemoClass := TWindowsXPForm;
: 9:
: NewDemoClass := TNodeForm;
: 10:
: NewDemoClass := THeaderOwnerDrawForm;
: else
: NewDemoClass := nil;
: end;
:
: if (ContainerPanel.ControlCount = 0) or not (ContainerPanel.Controls[0] is NewDemoClass) then
: begin
: if ContainerPanel.ControlCount > 0 then
: ContainerPanel.Controls[0].Free;
:
: if Assigned(NewDemoClass) then
: begin
: NewDemo := NewDemoClass.Create(Self);
: NewDemo.Hide;
: NewDemo.BorderStyle := bsNone;
: NewDemo.Parent := ContainerPanel;
: NewDemo.Align := alClient;
: NewDemo.Show;
: end;
: end;
: end;
|