請問在FileListBox1Change為何無法去focus其他視窗 |
尚未結案
|
kan0515
中階會員 發表:56 回覆:120 積分:50 註冊:2002-06-24 發送簡訊給我 |
我想利用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 發送簡訊給我 |
引言: 麻煩各位大大幫我看看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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |