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

请问dbgrid中的自动计算问题

尚未結案
tsui
一般會員


發表:2
回覆:7
積分:1
註冊:2005-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-13 09:42:14 IP:218.14.xxx.xxx 未訂閱
曾经见过不少的软件中使用相当于DELPHI的GRID模式进行计算(如 金额=单价×数量),我在使用时发现DBGRID中“金额”栏并没有马上计算出金额,而是在我输入结束后点击其他栏时才把计算结果显示(我使用的是虚增一栏位字段来显示计算结果)。请问各位前辈,DBGRID在计算时有没有相当于DBEDIT中ONCHANGE的事件,使得计算结果马上可以显示而不必改变焦点时才把计算结果显示?先谢谢各位! 發表人 - tsui 於 2005/09/13 09:43:14
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-13 20:12:39 IP:219.86.xxx.xxx 未訂閱
沒有,既始有也不好弄。可能要利用繼承的方式。 為合不直接用DBEDIT中ONCHANGE,把Visible =false 類似的方式。 簡單不必傷腦筋! 參考, ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
tsui
一般會員


發表:2
回覆:7
積分:1
註冊:2005-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-14 10:41:00 IP:218.14.xxx.xxx 未訂閱
谢谢版主回复。我也想过用DBEDIT内嵌到GRID中,可不知道如何弄,请指教!再次谢谢!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-14 13:44:02 IP:58.33.xxx.xxx 未訂閱
DBGRID是连QUERY的,你CHANGE事件应该写在QUERY的这个字段上,并不是写在DBGRID的字段上
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-14 23:26:50 IP:219.86.xxx.xxx 未訂閱
建立DBEDIT並不需要嵌在Grid 內。 設定與DBgrid相同的DatSource 及 要觸發的 Datafield 當資料欄位內容發生改變也會觸發 DBEdit 的OnChange 事件。 因此把 Visible = false 私下操作爾以。 這是較偷懶的作法。不需想得太複雜。 僅提供參考。 我喜歡這樣的作法。主要並不需加入Query 的事件。 因為Query 放在共同的Datamodule 內 加入任何的事件,可能會影響別的表單(FORM) ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
tsui
一般會員


發表:2
回覆:7
積分:1
註冊:2005-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-15 23:26:42 IP:218.14.xxx.xxx 未訂閱
我试了一下版主的方法,好像有些问题。情况是当你在数量栏修改时(如 单价×数量=金额),可能是由于GRID的关系,数据库进入了EDIT状态。而当进入了编辑状态后,DBEDIT中的数值并没有马上根据GRID所填写的数值改变,因而没有触发ONCHANGE事件,只有当POST后才能触发。版主可试一下再给我指点。谢谢版主!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-16 09:49:12 IP:58.33.xxx.xxx 未訂閱
tsui蠢,教你好办法不用
tsui
一般會員


發表:2
回覆:7
積分:1
註冊:2005-04-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-09-16 10:47:24 IP:218.14.xxx.xxx 未訂閱
sl@cableplus.com.cn兄,我试了一下,还不明白如何入手,希望能更详细指点?不耻下问方能进步!谢谢!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-09-16 12:16:18 IP:58.33.xxx.xxx 未訂閱
Query双击不是可以出来一个框,右键选ADDALLFIELD不就可以把字段加进那个框里吗,然后你点需要CHARGE的字段,按F11就可以出来属性框,属性框事件中有ONCLICK事件,你代码就写在这里
tsui
一般會員


發表:2
回覆:7
積分:1
註冊:2005-04-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-09-16 17:43:01 IP:218.14.xxx.xxx 未訂閱
承蒙sl@cableplus.com.cn兄指教,试用方法时出项如下问题: 1、选中数值改变的字段(NUMBER)后按下F11键进入该字段的事件设置,栏中并没有ONCLICK事件(是否就是指ONCHANGE事件)? 2、我在ONCHANGE事件中写入 FORM1.Query1.FieldByName('TOTAL').AsFloat:= FORM1.Query1.FieldValues['NUMBER']* FORM1.Query1.FieldValues['PRICE']; 然而在GRID的NUMBER栏中输入数值时,GRID栏中TOTAL并没有马上触发该ONCHANGE事件(GRID栏显示为编辑状态)。只有GRID的NUMBER栏改变了焦点时才触发。(我是希望当NUMBER栏中值改变时TOTAL栏中值马上就可以把NUMBER*PRICE的计算结果显示)。 QUERY我设置为CACHEDUPDATE=TRUE 并REQUESTLIVE=TRUE。 愚不可教。希望sl@cableplus.com.cn兄再赐教!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-09-19 09:57:26 IP:58.33.xxx.xxx 未訂閱
明白你意思了,DBGRID只有POST以后下面SUM才起作用的 如果你要你这种方法,你只能自己写SQL总计代码,不能用DBGRID SUMLIST了
系統時間:2024-05-19 13:32:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!