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

無法在for迴圈內變化Image1的圖片

答題得分者是:sryang
chooseuser
一般會員


發表:2
回覆:2
積分:0
註冊:2010-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-07-10 13:07:59 IP:163.13.xxx.xxx 訂閱
我打算利用for迴圈來變化image的圖片檔

但是image的圖片只會顯示第一張

直到回圈結束才會顯示最後一張


可是我看for迴圈裡面的變數有在

我以前是丟在timer裡面去讓image變化

發現沒有問題

直到我最近想改用for迴圈來變化才發現


一開始我以為是delay問題

我有在迴圈裡面增加sleep(500)

還是一樣

想請問板上有人有一樣的問題嗎?



Graphics::TBitmap *loadbmp = new Graphics::TBitmap();
for(int fm=0 ; fmCount ; fm ){
loadbmp->LoadFromFile(FileListBox1->Items->Strings[fm]);
Image1->Picture->Bitmap->Assign(loadbmp);
//Image1->Picture->Bitmap->LoadFromFile(FileListBox1->Items->Strings[fm]);
Sleep(500);
StatusBar1->SimpleText = fm;//顯示目前處理位
}
delete loadbmp;

編輯記錄
chooseuser 重新編輯於 2011-07-09 23:08:56, 註解 無‧
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-07-10 13:19:01 IP:114.35.xxx.xxx 訂閱
圖片換完之後,要有機會讓他重繪
Sleep() 之前加一行 Application->ProcessMessages();
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
chooseuser
一般會員


發表:2
回覆:2
積分:0
註冊:2010-01-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-10 15:06:53 IP:163.13.xxx.xxx 訂閱
 謝謝大大

一下就解決我的問題

我果然還是太淺!!
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-07-10 15:17:49 IP:114.35.xxx.xxx 訂閱
在迴圈中加入 Application->ProcessMessages() 除了可以解決需要重繪卻來不及重繪的狀況之外,
還可以避免程式長時間執行迴圈而無法處理 Window Message,造成程式無回應的狀況

不過加入了 Application->ProcessMessages() 也會使得迴圈執行過程當中對 UI 動作有所回應,包括按鈕的點擊,Form 的關閉等等
所以對於重要的長時間迴圈工作,除了在要進入迴圈之前,將不相干的按鈕 Enabled 屬性設定為 False 之外
還必須設定一個旗標,進入迴圈之前設定它,Form 的 OnCloseQuery 事件中檢查這個旗標,如有設定則不允許關閉
迴圈結束之後清除它,使得 Form 可以正常關閉

一點經驗,供您參考
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
diablo09105
一般會員


發表:25
回覆:45
積分:24
註冊:2011-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-07-10 21:35:44 IP:118.167.xxx.xxx 訂閱
用這個試試看↓
Refresh();
------
燒毛崴
系統時間:2024-12-04 1:15:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!