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

如何在自己宣告class 的member中 使用TLabel

答題得分者是:GrandRURU
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-23 13:00:16 IP:61.223.xxx.xxx 訂閱
各位大大:

這個問題我始終沒辦法解決

之前也提問相關繼承的問題

但是小弟不才 始終沒有辦法解決

我把我的問題用程式具體描述出來好了

有勞各位大大了~~!!

假設我在Unit1.cpp 宣告了以下的class和成員函式
[code cpp]
class TEXT
{
public:
void TEXTMEMBER( )
{

}
~TEXT( ){}
};
[/code]

那我想要在 TEXTMEMBER( ) 內連續使用Label

[code cpp]
((TLabel *)FindComponent("Label" IntToStr(fleg 10)))->Caption="";
[/code]

這段到底該如何宣告在TEXTMEMBER( )呢

我實在不知道這該怎麼使用 麻煩各位了

感激不盡
------
恩...
編輯記錄
istillloving 重新編輯於 2009-07-23 13:02:31, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-23 16:21:37 IP:203.75.xxx.xxx 未訂閱
FindComponent的使用 這篇有關於這個問題的解決方法。


主因是FindComponent為TForm的一個method……其它的,就請你再詳讀了唷 ^____^
編輯記錄
GrandRURU 重新編輯於 2009-07-23 16:21:59, 註解 無‧
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-23 18:17:33 IP:218.169.xxx.xxx 訂閱
您好:

我的天阿....我一直搞錯 也寫錯


[code cpp]
((Form1->TLabel *)FindComponent("Label" IntToStr(fleg 10)))->Caption="ssss"; //連續使用Label
[/code]

或是用我的class去繼承 :public TForm1
然後把TLabel塞到Unit1.h的public去......

感覺蠻蠢的......
------
恩...
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-07-24 10:56:14 IP:140.127.xxx.xxx 訂閱
大大您好:

可否容許我再提問一些相關的問題

第一點就是當我們開啟BCB之後從Form點進去看程式碼

都會自動建立以下程式看不太懂

[code cpp]
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{

}

[/code]

再來當我們新增了Button

[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{

}

[/code]

那請問TForm1::Button1Click 這是什麼宣告

TForm1 算是類別嗎

如果他這樣使用的話 TForm1應該有繼承Button1Click這個成員的類別才對沒錯吧??

請問如果我說的沒錯的話 是寫在哪裡呢??
------
恩...
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-07-24 13:04:57 IP:203.75.xxx.xxx 未訂閱
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) ←這個指的是TForm1的建構式

TForm1::Button1Click ←這個是TForm1上的TButton的Click事件

TForm1是繼承TForm類別的物件,Button
1就是繼承TButton的物件,而Button1則是被包在TForm1被宣告出來的物件,這兩者本身沒有相互繼承的關係,其它的,你可以看一下unit.h裡面的資訊。

===================引 用 istillloving 文 章===================
大大您好:

可否容許我再提問一些相關的問題

第一點就是當我們開啟BCB之後從Form點進去看程式碼

都會自動建立以下程式看不太懂

[code cpp]
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{

}

[/code]

再來當我們新增了Button

[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{

}

[/code]

那請問TForm1::Button1Click 這是什麼宣告

TForm1 算是類別嗎

如果他這樣使用的話 TForm1應該有繼承Button1Click這個成員的類別才對沒錯吧??

請問如果我說的沒錯的話 是寫在哪裡呢??
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-24 15:13:36 IP:140.127.xxx.xxx 訂閱
大大您好:

讓我理一理

TForm1類別 是繼承了 TForm類別

而Button1是TButton類別的指標 所以Button1所new出來的空間應該也是一個完整的TButton

在TForm1類別 裡面宣告了一個TButton類別的指標

TForm1::Button1Click 是一個事件 如果我們自己寫一個


[code cpp]
class TEXT{

void function( ){}

};
[/code]

如果要產生function的事件是這樣寫嗎

TForm1::function
然後觸發他就可以執行裡面的運算




另一個問題是為何我們在使用Image的時候可以如此宣告呢?


[code cpp]
Form1->Image1->Canvas->Pixels
[/code]

Image1 是 Form1的成員嗎?

他不是應該是屬於TImage這個類別的才是嗎?

還是Form1只是所謂的名稱空間 namespace



===================引 用 GrandRURU 文 章===================
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) ←這個指的是TForm1的建構式

TForm1::Button1Click ←這個是TForm1上的TButton的Click事件

TForm1是繼承TForm類別的物件,Button
1就是繼承TButton的物件,而Button1則是被包在TForm1被宣告出來的物件,這兩者本身沒有相互繼承的關係,其它的,你可以看一下unit.h裡面的資訊。
------
恩...
編輯記錄
istillloving 重新編輯於 2009-07-24 15:19:05, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-24 16:10:44 IP:118.169.xxx.xxx 訂閱
Q1:如果要產生function的事件是這樣寫嗎
TForm1::function
然後觸發他就可以執行裡面的運算
A1:你可以實驗一下就知道囉,但總覺得你把function(函式))跟event(事件)混在一起了

Q2:Image1是 Form1的成員嗎?
A2:是的,當你放一個TImage元件到Formg上後,你可以在.h看到
__published: // IDE-managed Components
TImage *Image1; <--- here

Image1是TImage這個類別的指標,並且是Form1中被公開(published)的成員
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-07-24 19:00:04 IP:210.64.xxx.xxx 訂閱
覺你你好學的精神不錯,但書本唸的不夠多就開始實作,內力不足,有時間多看一些c++物件導向的書!

>>而Button1是TButton類別的指標 所以Button1所new出來的空間應該也是一個完整的TButton
你這句話說的不正確,嚴僅一點的說應該是
而Button1是TButton物件的指標 所以由TButton類別所new出來的空間應該也是一個完整的TButton物件

>>在TForm1類別 裡面宣告了一個TButton類別的指標
更正為
在TForm1類別 裡面宣告了一個TButton物件的指標

>>而 TForm1::Button1Click 是一個事件
更正為
>而 TForm1::Button1Click 是一個事件處理方法(event handler)
事件不等於方法,事件算是一種"屬性",這等你更了解物件導向時再去了解它

重要補充你該了解的符號:
-> 間接取址符號,在物件中是用來取其成員用
::解析符號,在類別的應用上是為了類別成員的定義用,舉例來說 TForm1::Button1Click是指TForm1下的Button1Click方法的定義

還有一點,繼承與組合(又稱包含),英文inheritance and composition的不同,你要去了解。你有這方面不了解,所以觀念就很模糊。google查一下,或好的書,如thinking in c 之類的就會講到。如此你就不會問 Timage不是類別嗎? 怎會出現在TForm1的類別裡? (其實是一種組合)……

剛又看到你不了的一個問題,Form1->Image1->Canvas->Pixels ,補充一下。為何有那麼多個 -> 符號呢? 這穩含著 reference type 在其中,所以,你要也去查一下 c 中 reference 是什麼東西,應用在回傳值時是如何的…
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2009-07-24 19:06:08, 註解 無‧
aftcast 重新編輯於 2009-07-24 19:09:26, 註解 reference type 補充‧
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-07-24 22:37:09 IP:218.169.xxx.xxx 訂閱
我只能說感謝各位了.....

因為有太多語法在學期間沒看過....

所以誠如各位所說的自學很重要

也非常感謝各位的回答
------
恩...
系統時間:2024-06-28 19:38:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!