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

可否將 TFilterRecordEvent 傳至 一個function 中當functon

答題得分者是:wameng
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-17 16:08:17 IP:220.130.xxx.xxx 未訂閱
1.procedure AAA(aDs:TDataset;vFilterRcord:TFilterRecordEvent) 這種方式可實作嗎 ??? 2.試著寫一個 procedure FilterSUBAP_FMD(DataSet: TDataSet; var Accept: Boolean) ; begin Accept:= dataset['xx']='xxxx'...... end; 3.需要將 FilterSUBAP_FMD 傳入AAA 中,請問各位大大 ,該如保完成 ^^ 謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-17 16:28:21 IP:210.65.xxx.xxx 未訂閱
Hi danajn,    
procedure FilterSUBAP_FMD(DataSet: TDataSet; var Accept: Boolean) ;
begin
    AAA(DataSet,FilterSUBAP_FMD);
    Accept:= dataset['xx']='xxxx'......
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-17 16:36:02 IP:61.222.xxx.xxx 未訂閱
1. FilterSUBAP_FMD(DataSet: TDataSet; var Accept: Boolean) ;    必須與TFilterRecordEvent定義相同。    2. 為確保不會出錯! 在
procedure AAA(aDs:TDataset;vFilterRcord:TFilterRecordEvent);
begin
  if assigned(vFilterRcord) then
  begin
    vFilterRcord(帶入參數....);
  end;
end;
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-17 16:57:42 IP:220.130.xxx.xxx 未訂閱
Dear Fishman,wameng 若執行 AAA(ds,FilterSUBAP_FMD) 會出現 incompatible type :'method pointer and regular procedure' 的訊息 , 請問該如何解決 謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-17 17:11:53 IP:210.65.xxx.xxx 未訂閱
Hi danajn,    是不是這個原因?
procedure TForm1.AAA(aDs:TDataset;vFilterRcord:TFilterRecordEvent);
begin
//  do some thing 
end;    procedure TForm1.FilterSUBAP_FMD(DataSet: TDataSet; var Accept: Boolean) ;
begin
    AAA(DataSet,FilterSUBAP_FMD);
    Accept:= dataset['xx']='xxxx'......
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-17 17:26:16 IP:61.222.xxx.xxx 未訂閱
不好意思!做一下補充!    會出錯的原因,也就是帶入的事件並需為 Class Procedure  TFilterRecordEvent = procedure(DataSet: TDataSet;     var Accept: Boolean) of object;    也就是該事件必須為 物件的方法。    若在執行上有困難。{無法定義物件的方法} 可以用
type
  TShitClass = class
  private
    procedure FilterSUBAP_FMD(DataSet: TDataSet; var Accept: Boolean) ;
  end;
Var
  Shit    : TShitClass;
代替。 發表人 - wameng 於 2004/11/17 17:29:03
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-17 18:54:45 IP:220.130.xxx.xxx 未訂閱
經使用 wameng 的方法 已完成需要的作法      謝謝  Fishman , wameng   
系統時間:2024-06-29 5:20:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!