全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1171
推到 Plurk!
推到 Facebook!

請問在FileListBox1Change為何無法去focus其他視窗

尚未結案
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-29 18:00:15 IP:218.174.xxx.xxx 未訂閱
我想利用filelistbox的元件來監控同個目錄下是否有新的檔案產生 若是有*.CSV檔 則將csv檔中的所有資料皆key至excel中 希望是在由元件自行去偵測變化 而不是由使用者去按鍵 麻煩各位大大幫我看看why不行 (若是利用按鍵再去執行Fchang是正常的) 謝謝 [Code] procedure TForm1.FileListBox1Change(Sender: TObject); begin FChang(); end; procedure TForm1.KEYIN(SS:String); var I,A:integer; S:String; NO:Array[0..9] of Integer; begin //建立轉換字元 for i:=0 to 9 do NO[i]:=48 i; for i:=0 to Length(Trim(SS))-1 do begin s:=Copy(SS,i 1,1); if s='.' then begin keybd_event(vk_Decimal, 0, 0, 0); //keydown此鍵 keybd_event(vk_Decimal, 0, KEYEVENTF_KEYUP, 0); //keyup end ELSE begin a:=NO[strToint(s)]; //在notepad上show出數值 keybd_event(a, 0, 0, 0); //keydown此鍵 keybd_event(a, 0, KEYEVENTF_KEYUP, 0); //keyup end; end; keybd_event(VK_RETURN, 0, 0, 0); //換行 keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); end; procedure Tform1.FChang(); var i,j,x:integer; tmp:string; npad:HWND; begin IF fileListBox1.items.Count<>0 then tmp:=fileListBox1.items.Strings[0] Else FName:=''; IF (tmp<>FName) and (tmp<>'') then begin //將資料轉至StringGrid2中 ----->Start Timer1.Enabled:=False; FName:=tmp; memo2.lines.LoadFromFile(FName); tmp:=''; x:=0; j:=0; for i:=1 to Length(memo2.text) do begin If (Copy(memo2.text,i,1)<>',') and (Copy(memo2.text,i,1)<>Chr(13)) then tmp:=tmp Copy(memo2.text,i,1) ELSE begin StringGrid2.Cells[j,x]:=tmp; j:=j 1; tmp:=''; StringGrid2.ColCount:=j 1; StringGrid2.RowCount:=x 1; end; IF Copy(memo2.text,i,1)=Chr(13) then begin x:=X 1; j:=0; end; end; //將資料轉至StringGrid2中 ----->End Npad := FindWindow('XLMAIN', nil); if npad <> 0 then begin BringWindowToTop(Npad); //使其成為focus之window keybd_event(VK_RETURN, 0, 0, 0); //換行 keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); for i:=1 to StringGrid2.ColCount-1 do begin for j:=6 to StringGrid2.RowCount-1 do //欄 KEYIN(StringGrid2.Cells[j,i]); //TAB...跳至SPC下一欄 keybd_event(VK_TAB, 0, 0, 0); keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); end;//END I end; Timer1.Enabled:=True; end;//IF FName<>'' end; procedure TForm1.Button1Click(Sender: TObject); begin //FChang(); Flag:=True; end;
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-31 04:26:57 IP:203.204.xxx.xxx 未訂閱
引言: 麻煩各位大大幫我看看why不行
kan0515 你好 不行的原因如下: 1.FileListBox經測試(D5)在取得FileList後,即使該目錄下的檔案多了或少了也不會反應到FileListBox中。 2.FileListBox.OnChange是發生在項有改變時,不是Items的內容改變時,所以即使FileList內容改變了也不觸發。 至於要如何達到監控目錄(資料夾)的方法,請考以下連結或使用D6之後版本的ShellChangeNotifier元件會更方便喔! http://delphi.ktop.com.tw/topic.php?topic_id=29266 http://delphi.ktop.com.tw/topic.php?topic_id=19418 [BCB] http://delphi.ktop.com.tw/topic.php?topic_id=38376 http://delphi.ktop.com.tw/topic.php?topic_id=38360 _______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/07/31 04:28:07
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-04 15:20:44 IP:220.130.xxx.xxx 未訂閱
感謝Chance36 大大的熱心幫忙 我是利用一個timer1…每隔1秒就做filelistbox.update的動作 這樣就可以去知道是否有檔案的變化動作 那我後來的解決方式是利用一個flag 去判斷是否有更動 若有更動…則執行fchang的動作 將資料載入,填到excel中 感謝熱心協助
系統時間:2024-05-18 13:07:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!