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

於自定函數中使用FindComponent????

答題得分者是:cmf
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-29 14:47:45 IP:61.59.xxx.xxx 未訂閱
各位先進高手們... 小弟於一個自定函數無FORM格式中使用FindComponent 於編譯時卻出現找不到此函數的錯誤訊息??? Undeclared identfier:'FindComponent'... 於HELP得知其父類別為classes將其加入USES中還是一樣無法編譯 unit Userset2; interface uses SysUtils, wintypes, DB, ShellApi,dbtables,extctrls,stdctrls,classes, Windows, Messages, Graphics, Controls, Forms, Buttons, Grids, DBGrids, Refresh, Mytabl, DrLabel, Mask, DBCtrls, LblEffct, OX3DBEdit, ComCtrls, editintf, Dialogs ; . . . Function FldClear(SourTable:TTable;Palel:TPanel;NumType,StrType:String):Boolean; . . . Function FldClear(SourTable:TTable;Palel:TPanel;NumType,StrType:String):Boolean; var I,J,T : integer; PlFlds,asStr : String; Flds : array[0..99,0..99] of string; FldTypeStr : TEdit; begin T:=SourTable.FieldCount-1; for i := 0 to T do begin Flds[I,1]:=UpperCase(SourTable.Fields[i].FieldName); Flds[I,2]:=FldAsStrgin(SourTable.Fields[i].DataType); end; for i := 0 to Palel.ControlCount -1 do begin if (UpperCase(COPY(Palel.Controls[i].Name,1,2))='ME') and (UpperCase(COPY(Palel.Controls[i].Name,3,1))='_') then begin PlFlds:=COPY(Palel.Controls[i].Name,4,LengTh(Palel.Controls[i].Name)); if Palel.Controls[i] is TEdit then begin FldTypeStr:=FindComponent(Palel.Controls[i].Name as TCheckBox); end; for j := 0 to T do begin if UpperCase(PlFlds)=Flds[j,1] then begin if Flds[j,2]='AsString' then SourTable.FieldByName(Flds[j,1]).AsString:='aaa'; end; end; end; end; end; 是否此函數無法於無FORM的自定函數運行???還是少了什麼步驟??? 煩請各位先進高手指導~~~ 謝謝!!!!
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-29 14:55:30 IP:61.218.xxx.xxx 未訂閱
FldTypeStr:=Palel.FindComponent(Name);    FldTypeStr:=FindComponent(Palel.Controls[i].Name as TCheckBox); 紅色部分應為字串 發表人 - cmf 於 2003/01/29 15:08:37
------
︿︿
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-29 15:00:33 IP:61.221.xxx.xxx 未訂閱
rich777你好:  
引言: unit Userset2; interface uses SysUtils, wintypes, DB, ShellApi,dbtables,extctrls,stdctrls,classes, Windows, Messages, Graphics, Controls, Forms, Buttons, Grids, DBGrids, Refresh, Mytabl, DrLabel, Mask, DBCtrls, LblEffct, OX3DBEdit, ComCtrls, editintf, Dialogs ; . . . Function FldClear(SourTable:TTable;Palel:TPanel;NumType,StrType:String):Boolean; //多餘的把他註解掉吧!!! . . Function FldClear(SourTable:TTable;Palel:TPanel;NumType,StrType:String):Boolean; var I,J,T : integer; PlFlds,asStr : String; Flds : array[0..99,0..99] of string; FldTypeStr : TEdit; begin ...
------
======================
昏睡~
不昏睡~
不由昏睡~
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-29 16:05:51 IP:61.59.xxx.xxx 未訂閱
感謝cmf大大的回應.... 只要將 FldTypeStr:=FindComponent(Palel.Controls[i].Name as TCheckBox); 改為 FldTypeStr:=Palel.FindComponent(Palel.Controls[i].Name) as TCheckBox; 即可完成編譯~~~~ 但FldTypeStr好像沒被建構耶???? 因為我執行至SHOWMESSAGE(FldTypeStr.Name);測試時會產生錯誤???
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-29 16:14:08 IP:61.218.xxx.xxx 未訂閱
rich777;    這一段 有點奇怪     你已經 判斷 Palel.Controls[i] is TEdit    所以 Palel.Controls[i] 當然是 TEdit   怎麼可能 變成 TCheckBox   而且 FldTypeStr 你是定義為 tedit     所以可不可請你在說明清楚好嗎?    if Palel.Controls[i] is TEdit then begin  FldTypeStr:=Palel.FindComponent(Palel.Controls[i].Name) as TCheckBox; end;        
------
︿︿
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-29 16:23:33 IP:61.59.xxx.xxx 未訂閱
SORRY....寫錯了...是TEdit沒錯 if Palel.Controls[i] is TEdit then FldTypeStr:=Palel.FindComponent(Palel.Controls[i].Name) as TEdit; 1.SHOWMESSAGE(Palel.Controls[i].Name); 2.SHOWMESSAGE(FldTypeStr.Name); 實際執行時1可是正確顯示出其元件的NAME屬性... 但2時卻是空白的???? 所以應是FldTypeStr沒接受到找到的元件名稱??? 還是FindComponent函數根本沒找到元件??? 再次謝謝你~~~~
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-29 16:29:42 IP:61.218.xxx.xxx 未訂閱
    改成這樣試試     FldTypeStr:=Palel.Controls[i].Owner.FindComponent(Palel.Controls[i].Name) as TEdit;        
------
︿︿
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-06 11:42:47 IP:61.59.xxx.xxx 未訂閱
感謝cmf大大的熱心教導... 問題已完全克服了... 謝謝!!!
系統時間:2024-04-30 9:50:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!