TADOConnection Connection ing.... 時, 想要有個 TProgressBar 在跑!! |
答題得分者是:st33chen
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
各位好:
想請問一下, 假設預連線的 ms-sql server 是關閉的, 用 TADOConnection 要連接此 sql server , 因為 server 是關閉的,所以一定連不上, 但我是想在畫面有一個 TProgressBar 再跑 (顯示連線中........), TProgressBar ->Position = 0; TProgressBar ->Min = 1; TProgressBar ->Max = TADOConnection ->ConnectionTimeout tConnectionEnd = Now(); tConnectionStart = Now(); TTimer ->Enabled = true; TADOConnection ->Connected = true; 我用一個 TTimer 在跑, OnTimer 事件 : tConnectionEnd = Now(); TProgressBar ->Position = SecondsBetween(tConnectionStart,tConnectionEnd); Application->ProcessMessages(); 為什麼 TTimer OnTimer 事件沒觸發?? 也就是 TProgressBar 沒在跑?? 是不是還要設定什麼?? 謝謝!! |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好, 我用 delphi 將您的邏輯改寫如下, 是正常的 : var dt0, dt2 : tdatetime; procedure TForm1.Timer1Timer(Sender: TObject); var ii : integer; begin // if adoconnection1.Connected then // 最好有個判斷 如果連上了就停止 timer // timer1.Enabled := false // else begin dt2 := now; // label3.caption := floattostr(dt2); // 和 secondsbetween 比較用的 // ii := round((dt2-dt0)*60*60*24); // label1.Caption := inttostr(ii); ii := secondsbetween(dt0, dt2); label4.Caption := inttostr(ii); ProgressBar1.Position := ii; // end; end; procedure TForm1.Button1Click(Sender: TObject);
begin dt0 := now; // label2.caption := floattostr(dt0); progressbar1.Min := 0; progressbar1.Max := adoconnection1.ConnectionTimeout; timer1.Enabled:=true; adoconnection1.Connected := true; end; ( := 改成 =, . 改成-> 就大約是 bcb 的語法 ) 看您的原碼, 元件都用 T 開頭 ( 例如 TADOCONNECTION, 而非 ADOCONNECTION1) 這在 DELPHI 有些是 COMPILE 不過的 不知道是不是這原因讓您的程式跑起來不是您所想要的 您也可以用 DEBUG, 斷點設在 TIMER 事件裏 或是 設 LABEL 來顯示 TIMER 事件內的變數或元件值 來判斷 TIMER 有否被觸發 參考一下 ========================================== 我今天再試 RUN, 發覺 若 DB 的 SERVICE 不起來, ADOCONNECTION.CONNECTED := TRUE 會一直 HOLD 在那裡, 並不會交回執行權, 連 TIMER 都不會被觸發. SORRY, 現象和您說的一樣, 答了等於沒答, 不過, 我再試試 ========================================== google 了一下, 確有很多人反應類似問題... 我想, 用不同的 thread, 可能可以解決吧, 請試試看
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
謝謝 st33chen 大大!! 看您的原碼, 元件都用 T 開頭 ( 例如 TADOCONNECTION, 而非 ADOCONNECTION1) <---sorry 那不是原碼, 只是要讓看的人知道我用的是那一個元件。 例如:我的程式是 adocon <---誰知道 adocon 是什麼元件, 所以直接用元件的名字(TADOConnection 、TProgressBar )。 我的程式是可以正常 work 的,只是如你以下所說的: ==================================================================================== 我今天再試 RUN, 發覺 若 DB 的 SERVICE 不起來, ADOCONNECTION.CONNECTED := TRUE 會一直 HOLD 在那裡, 並不會交回執行權, 連 TIMER 都不會被觸發. SORRY, 現象和您說的一樣, 答了等於沒答, 不過, 我再試試 ==================================================================================== ===================引 用 st33chen 文 章=================== 您好, 我用 delphi 將您的邏輯改寫如下, 是正常的 : var dt0, dt2 : tdatetime; procedure TForm1.Timer1Timer(Sender: TObject); var ii : integer; begin // if adoconnection1.Connected then // 最好有個判斷 如果連上了就停止 timer // timer1.Enabled := false // else begin dt2 := now; // label3.caption := floattostr(dt2); // 和 secondsbetween 比較用的 // ii := round((dt2-dt0)*60*60*24); // label1.Caption := inttostr(ii); ii := secondsbetween(dt0, dt2); label4.Caption := inttostr(ii); ProgressBar1.Position := ii; // end; end; procedure TForm1.Button1Click(Sender: TObject);
begin dt0 := now; // label2.caption := floattostr(dt0); progressbar1.Min := 0; progressbar1.Max := adoconnection1.ConnectionTimeout; timer1.Enabled:=true; adoconnection1.Connected := true; end; ( := 改成 =, . 改成-> 就大約是 bcb 的語法 ) 看您的原碼, 元件都用 T 開頭 ( 例如 TADOCONNECTION, 而非 ADOCONNECTION1) 這在 DELPHI 有些是 COMPILE 不過的 不知道是不是這原因讓您的程式跑起來不是您所想要的 您也可以用 DEBUG, 斷點設在 TIMER 事件裏 或是 設 LABEL 來顯示 TIMER 事件內的變數或元件值 來判斷 TIMER 有否被觸發 參考一下 ========================================== 我今天再試 RUN, 發覺 若 DB 的 SERVICE 不起來, ADOCONNECTION.CONNECTED := TRUE 會一直 HOLD 在那裡, 並不會交回執行權, 連 TIMER 都不會被觸發. SORRY, 現象和您說的一樣, 答了等於沒答, 不過, 我再試試 ========================================== google 了一下, 確有很多人反應類似問題... 我想, 用不同的 thread, 可能可以解決吧, 請試試看 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |