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

如何清除Memo裡面的值和改變Label的Caption?

答題得分者是:tomoi
skybow
一般會員


發表:10
回覆:10
積分:4
註冊:2004-04-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-13 22:54:05 IP:59.116.xxx.xxx 訂閱
小弟在BCB寫了個簡單測試程式,有兩個Button,一個Memo,一個Label

我希望按下Button1之後,會依序展現三個效果:

1. 改變Label的Caption,停一秒
2. 清除Memo裡所有的資料,停一秒
3. 在Memo中寫入新資料。

兩個Button的程式碼如下:

[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption="PHASE A";
Sleep(1000);

Memo1->Clear();
Sleep(1000);


for(int j=0;j<50;j )
{
Memo1->Lines->Append(j);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Label1->Caption="PHASE B";
Sleep(1000);

Memo1->Clear();
Sleep(1000);


for(int j=0;j<100;j )
{
Memo1->Lines->Append(j);
}
}
//---------------------------------------------------------------------------


[/code]


奇怪的是,我明明依照順序寫,

可是呈現的效果卻變成:
1. 停兩秒,什麼也沒發生
2. Label的Caption瞬間改變、Memo瞬間填入新資料,一氣呵成!!

完全看不到Memo清除後,停止一秒才輸入新資料的效果。

請問要在一個按鈕內完成這樣順序的動作,要修改何處呢?

謝謝!

(附件為程式執行畫面)
附加檔案:48a2f58d3a9da_QQ.jpg
tomoi
初階會員


發表:2
回覆:30
積分:41
註冊:2008-07-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-08-14 08:21:43 IP:59.120.xxx.xxx 訂閱

在Sleep(1000)之前 加上這行

Application->ProcessMessages();
------
Tomo
編輯記錄
tomoi 重新編輯於 2008-08-14 08:22:43, 註解 無‧
tomoi 重新編輯於 2008-08-14 08:24:15, 註解 無‧
skybow
一般會員


發表:10
回覆:10
積分:4
註冊:2004-04-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-08-15 16:32:34 IP:59.116.xxx.xxx 訂閱

成功了!
順便補充我查到的函數定義:


Call ProcessMessages to permit the application to process events that are currently in the queue.


再次感謝!

===================引 用 tomoi 文 章===================

在Sleep(1000)之前 加上這行

Application->ProcessMessages();
編輯記錄
skybow 重新編輯於 2008-08-15 16:33:06, 註解 無‧
skybow 重新編輯於 2008-08-15 16:33:33, 註解 無‧
系統時間:2024-05-01 15:26:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!