全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1648
推到 Plurk!
推到 Facebook!

元件新增自訂屬性

答題得分者是:herbert2
suntea
一般會員


發表:18
回覆:16
積分:6
註冊:2006-12-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-15 11:38:39 IP:59.105.xxx.xxx 未訂閱
請問要如何元件新增自訂屬性

譬如動態新增一個Edit , 但想增加一個屬於此Edit 的文字屬性,可用來放一些額外資訊

如 Edit ->info_Text1 ,Edit ->info_Text2, Edit ->info_Text3
編輯記錄
suntea 重新編輯於 2008-10-15 11:41:22, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-29 05:00:57 IP:211.72.xxx.xxx 訂閱
您必須寫一個繼承 TEdit 之 TMyEdit 元件

MyEdit.h 如下例:

[code cpp]
//---------------------------------------------------------------------------
#ifndef MyEditH
#define MyEditH
//---------------------------------------------------------------------------
#include
#include
//....
//---------------------------------------------------------------------------
class PACKAGE MyEdit : public TEdit
{
private:
// ....
String Finfo_Text1,Finfo_Text2,Finfo_Text3;
void __fastcall Setinfo_Text1(String Value);
void __fastcall Setinfo_Text2(String Value);
void __fastcall Setinfo_Text3(String Value);
// ....
protected:
virtual void __fastcall Loaded(void);
/* if need
DYNAMIC void __fastcall Change(void);
DYNAMIC void __fastcall DoEnter(void);
DYNAMIC void __fastcall DoExit(void);
DYNAMIC void __fastcall KeyDown(Word &Key, Classes::TShiftState Shift);
DYNAMIC void __fastcall KeyPress(char &Key);
*/
public:
__fastcall TMyEdit(TComponent* Owner);
__fastcall ~TMyEdit();
// ....
__published:
__property String info_Text1 = {read=Finfo_Text1, write=Setinfo_Text1};
__property String info_Text2 = {read=Finfo_Text2, write=Setinfo_Text2};
__property String info_Text3 = {read=Finfo_Text3, write=Setinfo_Text3};
// ....
};
//---------------------------------------------------------------------------
#endif
[/code]

MyEdit.cpp 如下例:

[code cpp]
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "MyEdit.h"
// ....
#pragma resource "MyEdit.res" // 或沿用繼承來源 class 之 Bmp 則免本宣告
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
static inline void ValidCtrCheck(TMyEdit *)
{
new TMyEdit(NULL);
}
//---------------------------------------------------------------------------
// 注意: namespace 必須首字母大寫, 其他小寫. RegisterComponents 之面板名稱自行命名
namespace Myedit
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TMyEdit)};
RegisterComponents("MyComponent", classes, 0);
}
}
//---------------------------------------------------------------------------
__fastcall TMyEdit::TMyEdit(TComponent* Owner) : TEdit(Owner)
{
Finfo_Text1 = "";
Finfo_Text2 = "";
Finfo_Text3 = "";
}
//---------------------------------------------------------------------------
__fastcall TMyEdit::~TMyEdit()
{
// delete 於 construct 時 new 之 TStringList 等
}
//---------------------------------------------------------------------------
void __fastcall TMyEdit::Loaded()
{
inherited::Loaded();
if (ComponentState.Contains(csDesigning)) return;
// Something you want to do
}
//---------------------------------------------------------------------------
void __fastcall TMyEdit::Setinfo_Text1(String Value)
{
Finfo_Text1 = Value;
}
//---------------------------------------------------------------------------
void __fastcall TMyEdit::Setinfo_Text2(String Value)
{
Finfo_Text2 = Value;
}
//---------------------------------------------------------------------------
void __fastcall TMyEdit::Setinfo_Text3(String Value)
{
Finfo_Text3 = Value;
}
//---------------------------------------------------------------------------
[/code]


===================引 用 suntea 文 章===================
請問要如何元件新增自訂屬性

譬如動態新增一個Edit , 但想增加一個屬於此Edit 的文字屬性,可用來放一些額外資訊

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