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

關於寫公用procedure的問題

答題得分者是:jbinfo
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-01 13:27:10 IP:218.86.xxx.xxx 未訂閱
一個通用的procedure是這樣的 procedure TF_attendance.B_seek_ioClick(Sender: TObject); var   FilterStr:String; begin   With DM_main.T_attendance do begin Close; FilterStr:=''; if Seek_by_person.Checked then FilterStr:='PERSON=''' Seek_person_id.Text ''''; if Seek_by_time.Checked then begin if length(FilterStr)>0 then FilterStr:=FilterStr ' AND '; FilterStr:=FilterStr 'TIME>' Seek_start_time.Text; FilterStr:=FilterStr ' AND TIME<' Seek_end_time.Text; end; if length(FilterStr)>0 then begin Filter:=FilterStr; Filtered:=True; end else Filtered:=False; Open; end; end; 有好幾個bottun都要用到這個procedure,只有2个不同的地方是上面 With DM_main.T_attendance do當中的“DM_main.T_attendance”,還有 FilterStr:=FilterStr 'TIME>' Seek_start_time.Text這行和下行的“TIME”,爲了共用代碼,我寫了下面這個procedure,可是table這個地方有問題,是不是table不能為string? procedure TForm1.seek(table, time: string); var FilterStr:String; begin With table do begin Close; FilterStr:=''; if cbSeekPerson.Checked then FilterStr:='PERSON=''' Seek_person_id.Text ''''; if cbSeekTime.Checked then begin if length(FilterStr)>0 then FilterStr:=FilterStr ' AND '; FilterStr:=FilterStr time '>=' Seek_start_time.Text; FilterStr:=FilterStr ' AND ' time '<=' Seek_end_time.Text; end; if length(FilterStr)>0 then begin Filter:=FilterStr; Filtered:=True; end else Filtered:=False; Open; end; end;
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-01 15:13:40 IP:220.139.xxx.xxx 未訂閱
看了您 table 是定義成 string Delphi 的 string 又沒有 member function 不清楚您 with 他的意義在 ?? 再來 with table do begin Close; <== 這... 這應該會翻成 Form.Close 吧 ? 最後,請您在發表文章時,有含 source code 時,請用 [ code ] [ /code ] (即格式上 # 的那個按鈕) 將程式包起來 -- Regards, Skyer
------
--
Regards,
Skyer
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-01 15:48:45 IP:218.5.xxx.xxx 未訂閱
With DM_main.T_attendance do中的DM_main.T_attendance是引用datamodule裏面的表,我要讓它是可變的,所以設置了一個table參數,以後只要代入通用的peocedure即可共用代碼,但是我那樣的寫法是錯誤的,想請教該如何改才是正確的。謝了!
jbinfo
一般會員


發表:9
回覆:25
積分:16
註冊:2004-05-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-02 15:36:38 IP:61.60.xxx.xxx 未訂閱
oktony兄:你好,不知道你改成這樣子可不可以:
//-->我猜"有可能"你傳的table應該是TTable
procedure TForm1.seek(TableName:TTable;time: string);
begin
     with TableName do
     begin
          //-->這裡是你要過濾的資料程式         end;
end;
祝你好運
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-02 15:38:05 IP:218.86.xxx.xxx 未訂閱
弄明白了,是我把procedure TForm1.seek(table, time: string)的參數聲明錯了,應該是procedure TForm1.seek(table:TDataSet; time: string),這樣就正確了
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-02 15:40:32 IP:218.86.xxx.xxx 未訂閱
呵呵謝謝jbinfo,我跟你差不多同時回復這個問題,沒錯正是你所說的那樣!謝謝!
系統時間:2024-07-03 7:39:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!