線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1458
推到 Plurk!
推到 Facebook!

自訂的function,如何使用memo?

答題得分者是:m8815010
haohaohoa
一般會員


發表:4
回覆:4
積分:1
註冊:2005-01-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-16 17:24:12 IP:140.118.xxx.xxx 未訂閱
我在程式中自訂一個function~ function內有這行Memo2->Lines->Add(str); 但卻顯示[C Error] Unit1.cpp(272): E2451 Undefined symbol 'Memo2' 請問一下要怎麼做? 謝謝~
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-16 17:41:30 IP:61.63.xxx.xxx 未訂閱
引言: 我在程式中自訂一個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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-16 23:18:43 IP:203.73.xxx.xxx 未訂閱
可以了~ 謝謝你的回應~ 另一種方式是將這個function定義在.h中,Form class內,這樣就可以了 不過這種方法是什麼意思? .h在BCB中是什麼意思?
maxmafiona
一般會員


發表:0
回覆:1
積分:0
註冊:2005-07-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-03 00:37:18 IP:163.28.xxx.xxx 未訂閱
我跟原發問的大大有一樣的狀況... 不過我加了VGForm1->Memo2....之後來是一樣沒有解決... 左邊的object treevie如下: VGForm1 --PageControl1 ----TabSheet3 ------Memo2 所以我想說用另一種解法..... 不知大大您所提的在.h裡的Form class是在哪一區塊定義呢? 可否舉個小實例讓我確切的了解呢?感謝^___^
s1937kk
一般會員


發表:2
回覆:15
積分:8
註冊:2004-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-04 22:17:31 IP:61.219.xxx.xxx 未訂閱
抱歉,插個花^^" .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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-04 22:37:40 IP:61.219.xxx.xxx 未訂閱
引言: 我跟原發問的大大有一樣的狀況... 不過我加了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
系統時間:2024-11-25 11:47:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!