多個Label物件與自訂function的呼叫? |
答題得分者是:h@visli
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
請問: 我有多個Label, 每個Label都傳入一個字串給一個function使用.
但是我的Label太多,一個個的輸入會很煩雜,有沒有其它的寫法,可以一次取代多個label click method的寫法? 謝謝. void __fastcall TForm1::FindIP(AnsiString entity) { //............................................. } void __fastcall TForm1::Label9Click(TObject *Sender) { FindIP(Label9->Caption); } //--------------------------------------------------------------------------- void __fastcall TForm1::Label8Click(TObject *Sender) { FindIP(Label8->Caption); } //--------------------------------------------------------------------------- void __fastcall TForm1::Label7Click(TObject *Sender) { FindIP(Label7->Caption); } //............多個label click method. |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
你可以把所有的Lable的OnClick事件指到同一个事件方法去,如Label9Click
再改写一下Label9Click的代码: void __fastcall TForm1::Label9Click(TObject *Sender) { FindIP(TLabel(*Sender)->Caption); } ===================引 用 nlj859 文 章=================== 請問: 我有多個Label, 每個Label都傳入一個字串給一個function使用. 但是我的Label太多,一個個的輸入會很煩雜,有沒有其它的寫法,可以一次取代多個label click method的寫法? 謝謝. void __fastcall TForm1::FindIP(AnsiString entity) { //............................................. } void __fastcall TForm1::Label9Click(TObject *Sender) { FindIP(Label9->Caption); } //--------------------------------------------------------------------------- void __fastcall TForm1::Label8Click(TObject *Sender) { FindIP(Label8->Caption); } //--------------------------------------------------------------------------- void __fastcall TForm1::Label7Click(TObject *Sender) { FindIP(Label7->Caption); } //............多個label click method.
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
"把所有的Lable的OnClick事件指到同一个事件方法去"
==>請問可以再詳細說明該怎麼寫嗎? 謝謝 ===================引 用 h@visli 文 章=================== 你可以把所有的Lable的OnClick事件指到同一个事件方法去,如Label9Click 再改写一下Label9Click的代码: void __fastcall TForm1::Label9Click(TObject *Sender) { FindIP(TLabel(*Sender)->Caption); } |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
就是说,你在Object Inspector的Events标签中,把所有Label的OnClick事件选择为某一个Label的Click事件。
我没有C Builder,用Delphi做了个例子: 源代码: [code delphi] //...... var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.FindIP(entity: AnsiString); begin // end; procedure TForm1.Label1Click(Sender: TObject); //把其它Label的Click事件都设置为Label1Click begin FindIP(TLabel(Sender).Caption); //or //FindIP((Sender as TLabel).Caption); end; end. [/code] 窗体文件: object Form1: TForm1 Left = 192 Top = 107 Width = 142 Height = 145 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 32 Top = 32 Width = 31 Height = 13 Caption = 'Label1' OnClick = Label1Click end object Label2: TLabel Left = 32 Top = 56 Width = 31 Height = 13 Caption = 'Label2' OnClick = Label1Click end object Label3: TLabel Left = 32 Top = 80 Width = 31 Height = 13 Caption = 'Label3' OnClick = Label1Click end end
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
[code cpp]
void __fastcall TForm1::Label1Click(TObject *Sender) { FindIP(TLabel(*Sender)->Caption); } [/code] 上述都會出現compile error,正確的寫法應該怎麼做? [C Error] Unit1.cpp(96): E2285 Could not find a match for 'TLabel::TLabel(TObject)' [C Error] Unit1.cpp(96): E2459 VCL style classes must be constructed using operator new |
daldal
高階會員 發表:6 回覆:102 積分:226 註冊:2007-06-18 發送簡訊給我 |
BCB改成這樣子就可以了,或是用dynamic_cast也行
[code cpp] void __fastcall TForm1::Label1Click(TObject *Sender) { FindIP(((TLabel*)Sender)->Caption); } [/code] [code cpp] void __fastcall TForm1::Label1Click(TObject *Sender) { FindIP(dynamic_cast } [/code] |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
這是我之前Button的寫法,希望對你有幫助.
[code cpp] AnsiString ss; TComponent *TheComponent; for (int i=2;i<=10;i ) { ss = "Button"; ss = ss i; TheComponent = FindComponent(ss); if (TheComponent) { ((TButton*)TheComponent)->Caption = ss; ((TButton*)TheComponent)->Visible = true; ((TButton*)TheComponent)->OnClick = Button1Click; ((TButton*)TheComponent)->Tag = i; } } [/code] p.s. ((TButton*)TheComponent)->OnClick = Button1Click; 不知這行為什麼會變掉. forbidden 改 OnClick |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |