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

DBGrid设置只读

缺席
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-17 23:39:48 IP:222.183.xxx.xxx 未訂閱
各位大大好:    小弟请教一个问题。 我用一个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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-18 00:19:47 IP:222.183.xxx.xxx 未訂閱
按上面的方式会导致栈溢出,(为什么我没有想清楚),    问题解决如下,供大家分享:     
     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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-18 15:39:12 IP:210.177.xxx.xxx 未訂閱
set DBGrid1.columes[2].readonly := true; cloumes[2] means the 3rd coloume.
系統時間:2024-03-29 2:23:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!