元件新增自訂屬性 |
答題得分者是:herbert2
|
suntea
一般會員 發表:18 回覆:16 積分:6 註冊:2006-12-12 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
您必須寫一個繼承 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |