線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1742
推到 Plurk!
推到 Facebook!

怎样把ImageList1里的第一个图标放如TICON中?

答題得分者是:hagar
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-15 15:54:40 IP:218.80.xxx.xxx 未訂閱
  ico := TIcon.Create;
  ico.LoadFromFile('F:\Miscellaneous\Icon\p_pospe.ico'); 
代码如上,我想用ImageList1里的第一个图标代替'F:\Miscellaneous\Icon\p_pospe.ico' 应该怎么解决? 谢谢指教!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-15 16:21:44 IP:202.39.xxx.xxx 未訂閱
begin
  // ...
  ImageList1.GetIcon(0, ico); // 0 表 ImageList1 裡的第 1 個 icon
end;
--
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-15 16:33:56 IP:218.80.xxx.xxx 未訂閱
对呀,我这么写就不对了: ico := TIcon.Create; ico.LoadFromFile(ImageList1.GetIcon(0, ico)); 就会报错,请问是为什么?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-15 16:49:17 IP:202.39.xxx.xxx 未訂閱
引言: 对呀,我这么写就不对了: ico := TIcon.Create; ico.LoadFromFile(ImageList1.GetIcon(0, ico)); 就会报错,请问是为什么?
您的目的到底是什麼? ico.LoadFromFile('c:\xx.ico'); 是把 c:\xx.ico 這個 icon 檔載入至 ico 中 ImageList1.GetIcon(0, ico); 則是把 ImageList1 的第 1 個 icon 載入至 ico 中 兩個是不一樣的 另外, ImageList1.GetIcon(0, ico) 是一 procedure 而 ico.LoadFromFile 要傳入的是一個字串 兩者形態不相符, 所以不能這樣寫. --
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-15 16:56:30 IP:218.80.xxx.xxx 未訂閱
我是把一张图片放在ImageList1 里,然后用ico.LoadFromFile去调用这张图片, 而c:\xx.ico 这么写是固定写死的,要是我C盘下没这xx.ico 那程序就要报错了,所以我想通过ico.LoadFromFile直接去调用ImageList1 里的那张图片,请教一下该怎么办?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-15 17:11:53 IP:202.39.xxx.xxx 未訂閱
引言: 我是把一张图片放在ImageList1 里,然后用ico.LoadFromFile去调用这张图片, 而c:\xx.ico 这么写是固定写死的,要是我C盘下没这xx.ico 那程序就要报错了,所以我想通过ico.LoadFromFile直接去调用ImageList1 里的那张图片,请教一下该怎么办?
LoadFromFile 是載入檔案的方式 而已經載入至 ImageList1 的 icon 就不能再用 LoadFromFile 的方式來取得 如果要取得 ImageList1 裡的第 1 個 icon 就用上面說的 ImageList1.GetIcon(0, ico); 的方式 這樣 ico 就會顯示 ImageList1 裡的第 1 個 icon 了. 如果您堅持要用 LoadFromFile 的方式 那就先將 ImageList1 裡要取得的 icon 存成暫存檔 再用 LoadFromFile 的方式來取得 不過想不懂為什麼您一定要用 LoadFromFile 的方式? --
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-15 17:24:34 IP:218.80.xxx.xxx 未訂閱
代码如下: 
   ntida.cbSize := sizeof(tnotifyicondataa); //指定ntida的长度
  ntida.Wnd := handle; //取应用程序主窗体的句柄
  ntida.uID := iid; //用户自定义的一个数值,在uCallbackMessage参数指定的消息中使
  ntida.uFlags := nif_icon   nif_tip   nif_message; //指定在该结构中uCallbackMessage、hIcon和szTip参数都有效
  ntida.uCallbackMessage := mousemsg;
//指定的窗口消息
  ico := TIcon.Create;
  ico.LoadFromFile('F:\Miscellaneous\Icon\p_pospe.ico');
  Application.Icon.Handle := ico.Handle;
  ntida.hIcon := Application.Icon.handle; //'D:\Icon\47.ico';
//指定系统状态栏显示应用程序的图标句柄
  ntida.szTip := '消息提示信息';
//当鼠标停留在系统状态栏该图标上时,出现该提示信息
  shell_notifyicona(NIM_ADD, @ntida);
//在系统状态栏增加一个新图标
我是想把这个图标放在系统状态栏上,请问如果不用ico.LoadFromFile,那应该用什么方法能动态指定图片呢?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-15 17:36:11 IP:202.39.xxx.xxx 未訂閱
這樣行嗎?
  // ...
  ico := TIcon.Create;
  ImageList.GetIcon(0, ico);
  //ico.LoadFromFile('F:\Miscellaneous\Icon\p_pospe.ico');
  Application.Icon.Handle := ico.Handle;
  ntida.hIcon := Application.Icon.handle; //'D:\Icon\47.ico';
  // ...
--
系統時間:2024-06-29 17:47:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!