在form上放一個dbgrid 和多個dbedit 控件,在增加記錄的時候,會有這樣的情況(100分)

  • 主题发起人 主题发起人 bolly
  • 开始时间 开始时间
B

bolly

Unregistered / Unconfirmed
GUEST, unregistred user!
在form上放一個dbgrid 和多個dbedit 控件,在增加記錄的時候,會有這樣的情況
當焦點在dbgrid上時,按增加按鈕,DataSet.state 為 dsInsert 狀態, 只能在dbgrid上輸入數據,如果我把焦點移到dbgrid上時, DataSet.state 變為 dsBrowse 狀態, 相反也是如此, 有沒有辦法讓它不要改變! 因為我要在dbedit中輸入數據。
 
是不是原来的焦点在哪就在哪输入数据?焦点变了,就不让输入了???
但如果他输入到一半的时候移动了焦点你怎么办???

对于你上面的问题,当用户新增时记录下焦点控件的CLASS名,并在ONEXIT中写事件,
看它是不是你前面记录的CLASS,如果不是,就可以取消这次操作。
 
你可以在dbedit得到焦点时,设置一下dataset 为 edit;
 
处理onenter和onexit事件,改变dataset的状态。
 
你使用的是同一个Datasource吗?如果不是,状态当然不会相同
如果是,你就看看,你的Table或者DbGrid有没有处理什么事件,
使得状态变化了,
如果还不行,就单步调试,看看到底什么时候变的
 
各位兄弟 ,我是新增加一條記錄, 並且用的同一個DataSource,DBGRID也沒有事件!
 
table1.edit
 
你可以在增加记录时,设置table.edit;
dbedit和dbgrid都可以输入数据;
增加完记录时,设置table.post;

[:D]
 
table1.edit
 
加上索引是一下
 
在你增加纪录之前设置哪个控件,具有焦点,这样肯定没有问题
 
我没试过,但我认为你这种做法不可取。
同一datasource,当table1.edit时,系统post哪里的值好呢?
真要这样做可以试试:
if (activecontrol as tdbgrid) then begin
dbedit1.enabled:=false;
dbedit2.enabled:=false...
table1.insert/edit;
end else
if (activecontrol as tdbedit) then ...
 
你可以把DBGrid的options属性中的dgediting变为FALSE这样你就只能编辑DBEdit了
 
要不改变编辑状态,使之不在 dsInsert 狀態和 dsBrowse 狀態之间变化
可以在增加记录的时候将DBGrid的Enabled属性设为FALSE,等编辑完了之
后再改为TRUE,就OK了!
 
DBGrid的Option屬性裡面有一個CancelOnExit,你是不是設置為True了?
 
多人接受答案了。
 
[:)][:D][8D][:(][:(!][?][8D][:)]
 
后退
顶部