於自定函數中使用FindComponent???? |
答題得分者是:cmf
|
rich777
一般會員 發表:25 回覆:25 積分:10 註冊:2002-04-22 發送簡訊給我 |
各位先進高手們...
小弟於一個自定函數無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 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
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 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
rich777
一般會員 發表:25 回覆:25 積分:10 註冊:2002-04-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |