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

VCL动态使用问题?

尚未結案
kmljq2004
一般會員


發表:7
回覆:3
積分:2
註冊:2004-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-04 09:53:54 IP:220.163.xxx.xxx 未訂閱
在一个数据表中存放着CheckBox的name和控制checked的状态,from上有对应的CheckBox,其名称与数据表中的Name对应,而此from是动态生成的,代码如下: var hwnd: THandle; begin Hwnd:=FindWindow(nil, PCHAR('用户管理')); if Frm_user=nil then begin Frm_user:=TFrm_user.Create(Application); Frm_user.Show; end else BringWindowToTop(Hwnd); end; 现做如下处理: procedure TFrm_user.FormCreate(Sender: TObject); var chk: TCheckBox; begin with dm do begin {用户对应的代码} tbl_model.Open; tbl_model.First; while not tbl_model.Eof do begin t_name:=tbl_model.fieldByName('NAME').AsString; t_state:=tbl_model.fieldByName('STATE').AsString; chk:=TCheckBox(frm_user.FindComponent(t_name)); if chk<>nil then begin if t_state<>'0' then chk.Checked:=False else chk.Checked:=true; end; tbl_model.Next; end; end; end; 代码编译是通过,但运行时报出异常错误(如下图)!敬请各位,帮忙解决!谢谢
RogerHer
一般會員


發表:11
回覆:39
積分:10
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-04 11:08:19 IP:61.221.xxx.xxx 未訂閱
圖在哪?
kmljq2004
一般會員


發表:7
回覆:3
積分:2
註冊:2004-07-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-04 14:03:41 IP:220.163.xxx.xxx 未訂閱
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-04 16:30:59 IP:202.39.xxx.xxx 未訂閱
看程式碼沒什麼問題 猜想是在 Frm_user 的 FormCreate 時 dm 尚未被 Create, 所以有 AV 的錯誤 解決方法是在 delphi 選單的 Project -> Options 調整 Auto-create Forms 的順序(即 dm 在 Frm_user 之前) 或在 Frm_user 的 FormCreate 時手動 create dm
kmljq2004
一般會員


發表:7
回覆:3
積分:2
註冊:2004-07-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-05 19:21:38 IP:220.163.xxx.xxx 未訂閱
我的DM是最开始的,还是有同样的错误!连接数据库使用的是ADO!
John Wong
初階會員


發表:1
回覆:35
積分:32
註冊:2004-09-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-08 05:44:43 IP:218.103.xxx.xxx 未訂閱
好可能是FindComponent(t_name)時, 找到的不是TCheckBox, 例如是TLabel一類的元件.
jauds
一般會員


發表:1
回覆:3
積分:0
註冊:2003-06-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-12 07:47:02 IP:202.39.xxx.xxx 未訂閱
從你的程式碼看起來,好像並沒有特別去設定要抓那一個component, 所以會如john wong兄所提,可能抓到的是不同種類的元件, 如TLabel,最好對所有的元件掃過一遍做判斷,如下: for i := 0 to ComponentCount - 1 do begin if (Components[i] is TCheckBox) then begin //你要對CheckBox處理的程式碼... end; end; 試看看吧!
系統時間:2024-07-02 3:06:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!