DBGrid设置只读 |
缺席
|
zzmbeyond01
中階會員 ![]() ![]() ![]() 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
各位大大好: 小弟请教一个问题。
我用一个dbgrid显示一张数据表,表中字段如下:
ID ZMJ JZMJ DivMJ
其中DivMJ的值=JZMJ/ZMJ 我需要把这张表显示出来,也就是说DivMj不能由输入编辑,而是由JZMJ/ZMJ的结果,请问如何做?
我用如下方法没有成功 procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if DBGrid1.SelectedField.FieldName='jzmj' then begin Adodataset1.FieldByName('divmj').ReadOnly:=false; end else Adodataset1.FieldByName('divmj').ReadOnly:=true; if not Adodataset1.FieldByName('divmj').ReadOnly then Adodataset1.FieldByName('divmj').AsFloat:=Adodataset1.FieldByName('jzmj').AsInteger/Adodataset1.FieldByName('zmj').AsInteger; end; 在DataSource1DataChange(Sender: TObject; Field: TField);事件里可以实现计算显示,但是无法做到屏蔽输入‘divmj’字段对应的内容 |
zzmbeyond01
中階會員 ![]() ![]() ![]() 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
按上面的方式会导致栈溢出,(为什么我没有想清楚), 问题解决如下,供大家分享:
procedure TForm1.ADODataSet1JZMJChange(Sender: TField); begin Adodataset1.FieldByName('divmj').AsFloat:=Adodataset1.FieldByName('JZMJ').AsInteger/Adodataset1.FieldByName('ZMJ').AsInteger; end; procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.SelectedField.FieldName='Divmj' then Adodataset1.FieldByName('Divmj').ReadOnly:=true else Adodataset1.FieldByName('Divmj').ReadOnly:=false; end; |
skp
一般會員 ![]() ![]() 發表:14 回覆:19 積分:6 註冊:2002-11-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |