如何在按下Button時,改變滑鼠所OnClick的Label之顏色? |
尚未結案
|
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
(1)用for迴圈+陣列的方式產生了,3~10不等的Label.
(2)產生的TLabel,用參數傳遞的方式呼叫OnClock事件.
ex:
TLabel *LB[61]; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { for(i=1;i<61;i ) { LB[i] = new TLabel(this); LB[i]->Parent = Form1; LB[i]->Color = clYellow; //預設顏色為Yellow LB[i]->OnClick = &MyClick; // 參數傳遞MyClick /*以下Width、Height等屬性忽略*/ : : : } } //--------------------------------------------------------------------------- void __fastcall TForm1::MyClick(TObject *Sender) { TLabel *LB=new TLabel(this); LB=((TLabel*)Sender); if(LB->Color==clRed) { LB->Color=clYellow; } else { LB->Color=clRed; } } } //---------------------------------------------------------------------------這是LB用滑鼠OnClick時會改變顏色狀態. 但是小弟想改成用按下Button來改變滑鼠所指定(OnClick) 請問這該怎麼寫呢? 還是說忘記設定什麼屬性嗎? 小弟最近腦筋一直常打結,試了很久事不出來! 希望大大們能幫小弟一個忙, > ----------------------- 請多多指教啦!!^^
------
----------------------- 請多多指教啦!!^^ |
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
kj68215您好:
(1)依你之意MyClick只是要指到選中的是何種類別,然後再判斷/設定其顏色值,可是你卻創建一個新的TLabel(new TLabel(this)),這沒必要吧!建議你把程式修改如下,較合乎原意
TLabel *scr = dynamic_cast(2)用按下Button來改變滑鼠所指定(OnClick)我不明白這句話的原意為何?能否再描清楚一點 天長地久有時盡,追求知識無絕期! |
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
g6101您好:
小弟貼錯程式碼,真是抱歉,我之後也是寫成跟你一樣的.
TLabel *scr = dynamic_cast這樣才是比較正確的沒錯. 另外,你這樣的寫法真特別,第一次看到還有問號的出現,真是"大開眼界",學到了!thx. 至於您說的不明白,可能是小弟表達的不清楚,"拍 > 用圖片看好了(這樣應該會比較清楚)↓ < src="http://delphi.ktop.com.tw/download/upload\44073_Coffee_SetMap.jpg"> 這是之前小弟發表的網咖介面金剛組合版for BCB http://delphi.ktop.com.tw/topic.php?topic_id=44074 裡面的Label都是用滑鼠左鍵去點擊各個Label,進而改變Label的顏色. 但是小弟想改成用按下Button來改變來達到相同的功能,而不是用滑鼠去點擊. 請問g6101兄,是否有什麼方法呢? 另外,小弟還想到,如圖中的PC4、PC28、PC42由黃色變為紅色後,則無法在做任何顏色之變更(其餘都可以,只有紅色的不行),直到按下Load按鈕,才能回復到原先的黃色狀態! 如此做法會比較困難點嗎? > 發表人 -
------
----------------------- 請多多指教啦!!^^ |
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
kj68215您好:
(1)按你之意,想把TLabel元件換成TButton元件,是否只是想要有那種立體感覺(猜想),如果是話只要把TLabel元件換成TPanel元件就行了,要有按下去的感覺只要在BevelOuter欄位上動手腳就行了.
(2)如果非得要用TButton元件的話,因它無Color屬性(欄位),必需加工處理,請搜尋本站,應不難找到方法.
(3)由黃色變為紅色後,則無法在做任何顏色之變更,請在變更顏色之後再加上這行指令(scr->Refresh();)試試看. 天長地久有時盡,追求知識無絕期! 發表人 - g6101 於 2004/04/18 07:58:31 發表人 - g6101 於 2004/04/18 08:00:13
|
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
g6101您好:
其實小弟的意思不是把TLabel元件換成TButton元件.
而是"滑鼠點擊Label的動作,變成用Button去完成".
重點是在兩個功能是完全相同,只是做法不同!
比如說...
(a)先在PC1的Label用滑鼠點擊一下(此時顏色是維持原來的黃色).
(b)在按下Button,則改變了PC1的Label的顏色(由黃色變為紅色).
這跟滑鼠直接去點擊進而改變Label的顏色,功能是完全相同的!< >
所以小弟才不知道該怎麼去做?!挺煩惱< > 若還是有些不清楚小弟的意思的話,這有一個完整的軟體↓ 《SMART網咖管理系統》
http://toget.pchome.com.tw/intro/business_suite/12578.html
在Server主控台裡,有一個故障設定,小弟就是想要做出那種相似的功能! 另外,scr->Refresh();小弟之前沒用過,學到了!
thx. 發表人 -
------
----------------------- 請多多指教啦!!^^ |
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
引言: g6101您好: 其實小弟的意思不是把TLabel元件換成TButton元件. 而是"滑鼠點擊Label的動作,變成用Button去完成". 重點是在兩個功能是完全相同,只是做法不同! 比如說... (a)先在PC1的Label用滑鼠點擊一下(此時顏色是維持原來的黃色). (b)在按下Button,則改變了PC1的Label的顏色(由黃色變為紅色). 這跟滑鼠直接去點擊進而改變Label的顏色,功能是完全相同的!< > 所以小弟才不知道該怎麼去做?!挺煩惱< > 若還是有些不清楚小弟的意思的話,這有一個完整的軟體↓ 《SMART網咖管理系統》 http://toget.pchome.com.tw/intro/business_suite/12578.html 在Server主控台裡,有一個故障設定,小弟就是想要做出那種相似的功能! 另外,scr->Refresh();小弟之前沒用過,學到了! thx. 發表人 - >>< face="Verdana, Arial, Helvetica"> 再參考以下的程式碼TLabel *scr = NULL; //<-提升為全域指標 //===========MyClick 內容======================= scr = dynamic_cast天長地久有時盡,追求知識無絕期! |
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
太感謝了,g6101兄!
沒有你的code,小弟實在沒靈感...
小弟依你的 class="code">
const TColor ColorOff = clYellow;
const TColor ColorOn = clSkyBlue;
const TColor ColorConkout = clRed;
TLabel *scr = NULL;
//---------------------------------------------------------------------------
void __fastcall TForm1::MyClick(TObject *Sender)
{
scr = dynamic_cast
------
----------------------- 請多多指教啦!!^^ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |