在之前關於新版移植及Skin及自製按鈕效果,提到了如何讓Panel具有簡單效果,一共有三種如下:
1. Button
2. Down Button
3. Pic Button
並且我們可以利用函式設定按鈕的顏色
我提供的class可能會執行時出錯,所以細部的防呆需要您自行的處理,原則上您只要利用建構元給予效果特性,並把建構元(Constructure)存起來,他效果就不會消失(因為我在解構元時將關聯刪除,要是註解調解構元(Destructure),他就可以直接下建構元產生效果),當然我裡面有動態建立Timer,假設沒delete掉會memory leak,所以還是不要那樣做
在這邊提醒一下,我的Down Button您可以傳一個bool*進去,他會變成利用您的bool變數判斷是否按下,不知道上次有沒有講,忘了,應該是有講,在這邊再提醒一次
這有什麼好處呢,也就是要是您要把按鈕狀況存下來,您可以將bool*傳進去,他就會把按下的狀況存在您傳進去的bool裡面,那要是您要同步參數檔,就把參數檔裡面的bool變數傳給他,然後您要存時就存該變數即可,不需要去讀效果物件裡面的Check_t_
前言講完
這次來講我要如何快速地利用列表方式給予按鈕們特效,想想我們可以做出效果了,是否可以利用這個效果做出一個StatusBar,或是系統Menu呢?
當然是可以的,其實就寫一個Array做一個列表,將您要做效果的所有按鈕元件都填入這個Array裡,利用簡單的for loop將這些東西一個一個存入效果cllass的vector裡面,這樣他們就完全存住了
那要是要全部變換效果,也很簡單,您只需要寫一個for loop,用我效果class裡面寫好的Setting_Color設定他們各種狀況下的顏色,就可以用最短的code做一次性更新
這邊我就順便也示範TColorDialog的用法,這樣您就可以選您喜歡的顏色直接切換
基本上就打開我的連結看專案裡面的Code了,我這邊就不再貼上,因為Blogger其實排版挺累的
我用上次的關於新版移植及Skin及自製按鈕效果專案改的,
這次多一個簡單的Menu,其中Panel按鈕要一個一個排,其實很累,所以我也是有指令的方式排列,這是一種技巧,可以幫助您寫Code省力
基本上我有提供排序的按鈕,您也可以將註解打開它就會排好了,並可以程式化設定按鈕與邊界的間隔
並且我的Menu可以有Sub Menu,基本上我只做兩層,第三層作法依此類推,總之就自己想想吧
我在裡面會順便小用一下auto,有興趣可上網查auto c++11 :D
由於是自己做的,您無聊放一些圖案在上面也是可以的,只是點選部分要再處理,基本上要改效果class,如您不介意被干擾,就直接放圖吧(我有做示範,有一顆按鈕點圖沒反應)
那些效果可以切換,只要將一個Array裡的物件放到另一個Array,並且格式相符,按鈕也可以變成,按鈕(Down)
附帶一提,要移除只要將vector清空即可,效果就會消失,我會提供一個按鈕給您們按按看
別忘了 我的按鈕也可以利用ColorDialog換顏色(我簡單做而已,其實可以做6個按鈕來設定)
至於出現的Sub Menu我使用Timer將他定時關閉(如果checkbox1有勾選的話),也是一種技巧,基本上後期要用Hook去監視滑鼠事件,來關閉Sub Menu,這裡就先暫時不講了,那算比較深的技巧了,有興趣請先自己上網查
您會看到裡面有很多Array的用法,他可以使您更方便寫Code,而不用一行一行的下指令變換
裡面有很多技巧的(我放入5~6個技巧),有興趣研究一下吧XD
以後再來教Radio Button作法,很類似的,就是多個選一個,只有一個會按下
範例連結:
https://drive.google.com/open?id=0B6u5oifJv3EKY19Hc2xWcl92Z2s
沒有留言:
張貼留言