haohaohoa
一般會員
發表:4 回覆:4 積分:1 註冊:2005-01-12
發送簡訊給我
|
我在程式中自訂一個function~
function內有這行Memo2->Lines->Add(str);
但卻顯示[C Error] Unit1.cpp(272): E2451 Undefined symbol 'Memo2'
請問一下要怎麼做?
謝謝~
|
m8815010
版主
發表:99 回覆:372 積分:289 註冊:2003-11-13
發送簡訊給我
|
引言:
我在程式中自訂一個function~
function內有這行Memo2->Lines->Add(str);
但卻顯示[C Error] Unit1.cpp(272): E2451 Undefined symbol 'Memo2'
請問一下要怎麼做?
謝謝~
haohaoho你好: 用 < class="code">Form1->Memo2->Lines->Add(str); 試試! 意思就是 >! 發表人 -
|
haohaohoa
一般會員
發表:4 回覆:4 積分:1 註冊:2005-01-12
發送簡訊給我
|
可以了~
謝謝你的回應~ 另一種方式是將這個function定義在.h中,Form class內,這樣就可以了
不過這種方法是什麼意思?
.h在BCB中是什麼意思?
|
maxmafiona
一般會員
發表:0 回覆:1 積分:0 註冊:2005-07-03
發送簡訊給我
|
我跟原發問的大大有一樣的狀況...
不過我加了VGForm1->Memo2....之後來是一樣沒有解決...
左邊的object treevie如下:
VGForm1
--PageControl1
----TabSheet3
------Memo2
所以我想說用另一種解法.....
不知大大您所提的在.h裡的Form class是在哪一區塊定義呢?
可否舉個小實例讓我確切的了解呢?感謝^___^
|
s1937kk
一般會員
發表:2 回覆:15 積分:8 註冊:2004-11-15
發送簡訊給我
|
抱歉,插個花^^"
.h是標頭檔的意思
也就是用#include指令引入的檔案
對編譯器來說,會變成同一個檔案 以下為兩種方式操作Memo1的實例
//以下在Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void Test(AnsiString str); // 將Test這個自訂函數定義為Form1的成員
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif //以下在Unit1.cpp
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void Test2(AnsiString str);//將Test2定義為一般函數
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TForm1::Test(AnsiString str)
{
//由於Test定義為Form1的成員,因此可以直接操作其他成員,如Memo1
Memo1->Lines->Add(str);
//上面與下面那一行意義相同
//this->Memo1->Lines->Add(str);
}
void Test2(AnsiString str)
{
//由於Test2為一般函數,並不是Form1的成員
//且由於Memo1是Form1的成員,因此要明確指出
Form1->Memo1->Lines->Add(str);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Test("Test");
Test2("Test2");
//由於Button1Click也是Form1的成員,因此也可以直接操作其他成員
Memo1->Lines->Add("Button1Click");
}
//---------------------------------------------------------------------------
發表人 - s1937kk 於 2005/07/04 22:19:25
|
s1937kk
一般會員
發表:2 回覆:15 積分:8 註冊:2004-11-15
發送簡訊給我
|
引言:
我跟原發問的大大有一樣的狀況...
不過我加了VGForm1->Memo2....之後來是一樣沒有解決...
左邊的object treevie如下:
VGForm1
--PageControl1
----TabSheet3
------Memo2
所以我想說用另一種解法.....
不知大大您所提的在.h裡的Form class是在哪一區塊定義呢?
可否舉個小實例讓我確切的了解呢?感謝^___^
你好,我猜你的程式應該類似下面這樣:
//以下在Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
//---------------------------------------------------------------------------
class VGForm1 : public TForm //你把TForm1改成VGForm1
{
__published: // IDE-managed Components
TMemo *Memo1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void Test(AnsiString str); // 將Test這個自訂函數定義為Form1的成員
};
//---------------------------------------------------------------------------
extern PACKAGE VGForm1 *Form1; //你可能未更改紅色字部分,這行是說Form1是VGForm1的實例
//---------------------------------------------------------------------------
#endif 雖然您將Class名稱改為VGForm1,但並未將指標名稱更改
因此,若要操作VGForm1,仍是要以如:Form1->成員 的方式來操作 發表人 - s1937kk 於 2005/07/04 22:41:17
|