首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++Builder 窗体 不稳定的有关问题

2014-01-09 
C++Builder 窗体 不稳定的问题不正常的情况1不正常的情况2这是正常的 控件排布而且 即便是 第二种情况他也

C++Builder 窗体 不稳定的问题


不正常的情况1
C++Builder 窗体 不稳定的有关问题
不正常的情况2
C++Builder 窗体 不稳定的有关问题
这是正常的 控件排布

而且 即便是 第二种情况
他也能响应回车,也就是说 按钮 应该是 存在



[解决办法]
你这个代码里,感觉到处都有画蛇添脚的影子。

首先,你可以有效利用Form的ModalResult属性。
其次,Form的OnCreate事件中调用Invalidate,是没有什么意义的。
再有,既然你的Form是模态显示,用智能指针就没什么优势了。ShowModal以后,将Form上Edit的中的字符串接收回来,直接delete掉这个Form对象就行了。
[解决办法]
晚一些我给你发一段改过的代码。
[解决办法]
.h 文件

//---------------------------------------------------------------------------
 
#ifndef TEDIT_OK_CANCELH
#define TEDIT_OK_CANCELH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
 
//---------------------------------------------------------------------------
class TEDIT_OK_CANCEL: public TForm
{
__published:    // IDE-managed Components
    TButton *Button1;
    TEdit *Edit1;
    TButton *Button2;
    void __fastcall OK(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall Cancel(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormResize(TObject *Sender);
private:    // User declarations
public:        // User declarations
    __fastcall TEDIT_OK_CANCEL(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TEDIT_OK_CANCEL *EDIT_OK_CANCEL;
//---------------------------------------------------------------------------

int __fastcall OpenTestWindow(AnsiString &EditText,
        AnsiString Caption, TRect pos);
 
#endif


.cpp文件:
//---------------------------------------------------------------------------
#include <memory>
#include <vcl.h>
#pragma hdrstop
 
#include "TEDIT_OK_CANCEL.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TEDIT_OK_CANCEL *EDIT_OK_CANCEL;

//---------------------------------------------------------------------------
__fastcall TEDIT_OK_CANCEL::TEDIT_OK_CANCEL(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TEDIT_OK_CANCEL::OK(TObject *Sender)
{
ModalResult = mr_Ok;
}
//---------------------------------------------------------------------------
 
void __fastcall TEDIT_OK_CANCEL::Cancel(TObject *Sender)
{
ModalResult = mr_Cancel;
}
//---------------------------------------------------------------------------
 
void __fastcall TEDIT_OK_CANCEL::FormClose(TObject *Sender,
      TCloseAction &Action)
{
//
}
//---------------------------------------------------------------------------

void __fastcall TEDIT_OK_CANCEL::FormResize(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------

void __fastcall TEDIT_OK_CANCEL::FormCreate(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------
 
int __fastcall OpenTestWindow( AnsiString &EditText,
        AnsiString Caption, TRect pos )
{
TEDIT_OK_CANCEL *p = new TEDIT_OK_CANCEL(NULL);
    
    p->Caption = Caption;
    p->Edit1->Text = EditText;
     
    int nModalResult = p->ShowModal();
  EditText = nModalResult == mr_Ok? p->Edit1->Text: String("");

    return nModalResult;
}
//---------------------------------------------------------------------------

[解决办法]
妖哥威武!!

热点排行