如何在沒有Form的環境下使用 spcomm 的 ReceiveData |
缺席
|
qhero
一般會員 發表:1 回覆:1 積分:0 註冊:2009-04-09 發送簡訊給我 |
各位大大你們好,我是剛從其他程式語言轉過來寫delphi,所以問題難免會很奇怪,敬請見諒。
小弟我想做一個某特定設備的com port溝通library提供給其他同事使用,所有會用到spcomm與TThreadedtimer(聽說可以多線程運行,所以選它)。 但是因為我繼承TComponent而不是TForm,所以元件的Event項目無法調整,例如spcomm的onReceiveData與TThreadedtimer的onTimer。 想先說明的是,整個程式在我的物件繼承TForm時,都是可以正常運作的。在TForm(例如 TForm1 : TForm)時,只需要將procedure 命名為 TForm1ReceiveData(Buffer: PChar; BufferLength: Word); 就能自動被與onReceiveData連接上,或由Form的視覺元件上調整也可以。 但是在物件是繼承TComponent時卻不知道要怎麼被spcomm的onReceiveData觸發,我有做了一個 procedure 命名也是"物件名ReceiveData(...)",我也做過測試,在的物件create時指定 spcomm1.onReceiveData : = "物件名ReceiveData",不過也沒有用,發送後都沒收到訊息。 所以想請問的是,spcomm 與 TThreadedtimer 的觸發Event、如onReceiveData 無法在非視覺物件上被使用,或是說我的使用方法錯誤,請幫忙。 編輯記錄
qhero 重新編輯於 2009-04-09 01:13:18, 註解 無‧
|
qhero
一般會員 發表:1 回覆:1 積分:0 註冊:2009-04-09 發送簡訊給我 |
很抱歉,結果發現我之前的寫法是對的,只是因為我使用的TThreadedTimer發生很奇怪的問題,它死活都不動,明明在Application環境時都好好的,後來我改用TTimer之後就ㄧ切正常了。
原來如果我想要在我的物件MyComponent中指定 procedure MyTimer 來接收 TTimer的 onTimer,只需要這樣寫 TTimer1.onTimer := MyTimer; procedure MyComponent.MyTimer( Sender: TObject ); begin .... end; 再次說聲抱歉,因為自己的錯誤佔用網站資源。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |