如何在 runtime 改變 SpeedButton 的 Glyph?(用 ImageList的話) |
答題得分者是:Zard
|
jimmygump
一般會員 ![]() ![]() 發表:8 回覆:12 積分:4 註冊:2003-09-09 發送簡訊給我 |
如果圖是放在 ImageList 中要怎麼做呢?因為一些理由不採用 LoadFromFile哦...
------
Jimmy Gump |
jimmygump
一般會員 ![]() ![]() 發表:8 回覆:12 積分:4 註冊:2003-09-09 發送簡訊給我 |
sorry...看到 TBitmap 裡的範例了,用 Assign 可以做
var Bmp: TBitmap; begin XXX.Visible := not XXX.Visible; Bmp := TBitmap.Create; try if XXX.Visible then ImageList1.GetBitmap(NDX_HIDE, Bmp) else ImageList1.GetBitmap(NDX_SHOW, Bmp); SpeedButton1.Glyph.Assign(Bmp); finally Bmp.Free; end; end;還有沒有別的簡單方法? Jimmy Gump
------
Jimmy Gump |
Zard
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: sorry...看到 TBitmap 裡的範例了,用 Assign 可以做var Bmp: TBitmap; begin XXX.Visible := not XXX.Visible; Bmp := TBitmap.Create; try if XXX.Visible then ImageList1.GetBitmap(NDX_HIDE, Bmp) else ImageList1.GetBitmap(NDX_SHOW, Bmp); SpeedButton1.Glyph.Assign(Bmp); finally Bmp.Free; end; end;還有沒有別的簡單方法? Jimmy Gump 其實不用在Create一個Bitmap物件, 可以直接用, 例 ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph); |
jimmygump
一般會員 ![]() ![]() 發表:8 回覆:12 積分:4 註冊:2003-09-09 發送簡訊給我 |
引言: 其實不用在Create一個Bitmap物件, 可以直接用, 例就是很奇怪,這樣做真的圖都沒變,才會提問的嘛... 很短的測試,可以試試。看看問題何在?ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph); begin XXX.Visible := not XXX.Visible; // 都有依 XXX.Visible 執行進去,但畫面上的圖就是不會改 if XXX.Visible then ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph) else ImageList1.GetBitmap(NDX_SHOW, SpeedButton1.Glyph); end;Jimmy Gump
------
Jimmy Gump |
Zard
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言:呵呵, 抱歉沒仔細看你的第一篇, 只有看第二篇, 如果你要直接用ImageList1.GetBitmap(NDX_SHOW, SpeedButton1.Glyph); 你可以這樣改引言: 其實不用在Create一個Bitmap物件, 可以直接用, 例就是很奇怪,這樣做真的圖都沒變,才會提問的嘛... 很短的測試,可以試試。看看問題何在?ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph);begin XXX.Visible := not XXX.Visible; // 都有依 XXX.Visible 執行進去,但畫面上的圖就是不會改 if XXX.Visible then ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph) else ImageList1.GetBitmap(NDX_SHOW, SpeedButton1.Glyph); end;Jimmy Gump // 先用一個 TRect把SpeedButton1的大小記下來 Rect.Left := 0; Rect.Top := 0; Rect.Bottom := SpeedButton1.Height; Rect.Right := SpeedButton1.Width; 換圖時用 // 把上一張圖清掉 SpeedButton1.Glyph.Canvas.FillRect(Rect); // 換上新圖 ImageList1.GetBitmap(NDX_HIDE, SpeedButton1.Glyph); SpeedButton1.Glyph.Modified := TRUE; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |