请帮助解决由于打印结束后,表单状态改变的问题,谢谢!!!!!(20分)

  • 主题发起人 主题发起人 ld999
  • 开始时间 开始时间
L

ld999

Unregistered / Unconfirmed
GUEST, unregistred user!
我设计了一个打印发票的表单,在 onactivate 事件中有下列代码
form10:=tform10.create(application);
bitbtn4.enabled:=false;
.
.
等语句代码
首先利用query1控件按一定条件从数据库中查找出需要打印的记录,并显示在dbgrid控件
中。
然后在“打印”按钮中加入了加印发票的代码:
form10.quickrep1.preview;

form10.quickrep1.print;
程序运行后,首先按条件查询出记录,当我单击“打印”按钮后,成功了,但我希望dbgrid
中仍然显示刚才查到的记录。但是在按下该按钮后,表单好像返回到刚打开时的状态,所有
的控件的值都成了初始值,dbgrid也清空了。请问:打印语句是否触发了onactivate 事件。
我怎么做,才能实现我想要的结果????
我的积分不多了,只有20分,全部用上了,因为是初学者,请大家多帮助!!!!在此多谢了!!!!

 
请多帮忙,多谢,急。急
 
很急的问题,请帮忙!!!!
 
最简单的方法是查询完,打印出报表后强制激活数据集(open或active:=true)

 
各位老师:
请问是否是再利用query控件来查询一遍?????
 
经过一晚上的研究,我好像弄明白了一点,我觉得是这样造成的。
首先,我的报表是做在form10 上的,由于打印时,调用了form10,form10获得了焦点,
在打印结束后,系统自动回到“打印”表单form12上,这时form12自动得到焦点,所以
触发了onactivate 事件。
因为我的onactivate 事件中设置了form12表单的一些控件的初始值,所以表单也就恢复了
刚打开时的样子,一切查询结果又要重新来一遍。
如果真是这样,我想请问各位:怎样既不会让form12失去焦点,又打印的票据。这样才能不
再重新触发onactivate 事件。从而保证了表单状态。
 
我该怎样做,才能解决这一困扰好几天的问题????
 
再问一遍,同样的问题始终解决不了!!!
 
看来这个问题真的很难很难
 
为什么不在onshow事件中做你想做的事情呢?
 
我试试吧!!,谢谢猪哥!!!
 
试试再打印窗体关闭事件以前,执行dbgrid的数据集Query或者Table的重新激活,
Query。Active:=False;Query。Active:=True。也可以在dbgrid浏览窗口的
Formshow事件里面执行。
 
在一般情况下,尽量少使用onactivate 事件,尤其是一些关于页面初始化的语句
该事件是一旦窗口或控件被激活时就会执行。
页面或变量初始化的语句可以放在OnCreate事件中
而关于控制焦点或引用控件中数据的语句则放在OnShow事件中。
按你的做法,在执行完Form10中的语句,返回Form12时,因为onactivate 事件中有页面初始
化语句,所以程序当然会将数据库恢复为起始状态。
其实,你的程序引起数据库刷新的问题很少见,但在修改记录和删除记录时常会出现这种
现象(在数据浏览部件中直接修改或删除的除外)。
所以在修改(或删除)记录的按钮可以使用以一的语句,如:
Var
I:Integer;
Begin
I:=Query1.RecNo-1;//取得当前的记录号
当执行完修改或删除语句后
Query1.Close;
Query1.Open;
Query1.MoveBy(I);
End;
 

Similar threads

后退
顶部