請教 TLabel 改寫的問題 |
尚未結案
|
超肉腳
一般會員 發表:2 回覆:2 積分:0 註冊:2004-02-21 發送簡訊給我 |
請教各位大大:
偶速BCB的初學者,想要改寫 TLabel ,增加一些功能,如下列程式碼,
Compiler 過程都沒有錯誤,但是為蝦米一執行就出錯了...T_T
請各位大大幫忙,感恩阿..^_^ class TMyLabel : public TLabel
{
private: protected: public:
__fastcall TMyLabel();
__fastcall ~TMyLabel();
__published: }; class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
TMyLabel *label99;
__fastcall TForm1(TComponent* Owner);
};
extern PACKAGE TForm1 *Form1; TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TForm1::FormCreate(TObject *Sender)
{
label99->Caption = "test"; // 執行到此就出現錯誤訊息
label99->Visible = true;
}
|
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
引言: 請教各位大大: 偶速BCB的初學者,想要改寫 TLabel ,增加一些功能,如下列程式碼, Compiler 過程都沒有錯誤,但是為蝦米一執行就出錯了...T_T 請各位大大幫忙,感恩阿..^_^超肉腳 你好: 請參考下面的程式碼,修改紅色的部份 要貼程式碼請參考下面的連結,以方便閱讀,謝謝! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44855 以下是 Unit1.h 的內容 class TMyLabel : public TLabel { private: protected: public: __fastcall TMyLabel(TComponent* Owner); __fastcall ~TMyLabel(); __published: }; class TForm1 : public TForm { __published: // IDE-managed Components void __fastcall FormCreate(TObject *Sender); private: // User declarations public: // User declarations TMyLabel *label99; __fastcall TForm1(TComponent* Owner); }; 以下是 Unit1.cpp 的內容 TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::FormCreate(TObject *Sender) { label99 = new TMyLabel(this); label99->Parent = this; label99->Caption = "test"; // 執行到此就出現錯誤訊息 label99->Visible = true; } __fastcall TMyLabel::TMyLabel(TComponent* Owner) : TLabel(Owner) { //加入你要做的程式碼 //.................... } //--------------------------------------------------------------------------- __fastcall TMyLabel::~TMyLabel() { //.................... } //---------------------------------------------------------------------------發表人 - kwu 於 2004/02/23 09:17:15 |
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
超肉腳兄你好:
嗯,我覺得應該主要是沒有initialize的問題吧,應該是!
就是只有> > class="code">
public:
__fastcall TMyLabel(TComponent* Owner);
//上面為一般的寫法,硬要__fastcall TMyLabel();這樣寫也行啦!
__>> 有宣告就有程式碼:< class="code">
//---------------------------------------------------------------------------
__fastcall TMyLabel::TMyLabel(TComponent* Owner): TLabel(Owner)
{
//自已要新加的程式碼,當然可以為空
}
//---------------------------------------------------------------------------
__fastcall TMyLabel::~TMyLabel()
{
//自已要新加的程式碼,當然可以為空
}
所以:
void __fastcall TForm1::FormCreate(TObject *Sender) { //新增的兩行 label99=new TMyLabel(Form1); <---有new,且constructor的參數為這個label的Owner label99->Parent=Form1; <---指定label的parent是Form1 //上面這兩行幾乎可說是固定的VCL視窗元件的寫法,注意Owner和Parent的概念是不同的 以下屬性就可以隨便修改了!不特別指定、又沒有在constructor的時候做調整時,就會被當成default的值,也就是Object Inspector一開始看到的值: label99->Caption = "test"; // 執行到此就出現錯誤訊息 label99->Visible = true; label99->Font->Size=18; label99->Left=50; label99->Top=50; }that all I know,! |
超肉腳
一般會員 發表:2 回覆:2 積分:0 註冊:2004-02-21 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
|
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
|
超肉腳
一般會員 發表:2 回覆:2 積分:0 註冊:2004-02-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |