CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

如何用代码实现象向导一样功能?

楼主IntoWindy(水煮肉片)2006-03-20 20:26:47 在 其他数据库开发 / VFP 提问

用向导生成的表单由于数据环境的影响,实在错误太多,还是不用向导的好.  
   
  但是,我不知道如何编写代码才能实现添加,编辑,保存,以及还原等按纽的功能(都象用向导生成的一样!)请高手赐教!在线急等..   时间紧迫,明天就要交差了..请各位帮忙了.. 问题点数:20、回复次数:3Top

1 楼TERRYYRRET(命运)回复于 2006-03-21 07:40:51 得分 10

我给你看看吧Top

2 楼apple_8180(十豆三)回复于 2006-03-21 08:41:07 得分 10

请参考:  
   
  http://www.sfyb.net/bbs/list.asp?boardid=12  
  http://www.bc-cn.net/bbs/Article/22.html  
   
   
   
  设计一组维护记录的命令按钮  
   
  *-------------------------------------  
   
  设计思路:  
          1.该命令按钮组含有[新增]、[修改]、[删除]、[存储]、[取消]等命令按钮。    
          2.在运行新增或修改功能时,除了[存储]、[取消]按钮可操作,其余按钮都设置为禁止状态,防止使用者操作不当引起错误。  
          3.不是运行新增或修改功能时,除了[存储]、[取消]按钮为禁止状态外,其它按钮都是可以选择操作。    
          4.在运行新增或修改功能时,光标自动会跳到第一个输入框(文本框)中。        
   
  设计步骤:  
          1、从[表单控件]工具栏点工具按钮,添加一个命令按钮组到表单上,默认有Command1和Command2两个命令按钮。      
   
          2.设置CommandGroup对象的AutoSize属性为.T.,BottonCount属性为5,Name属性为UpdateBtn。      
   
          3.设置其中的各个按钮属性如下:    
  Command1:Caption="新增"   FontSize=12   Name=CmdNew    
  Command2:Caption="修改"   FontSize=12   Name=CmdEdit    
  Command3:Caption="删除"   FontSize=12   Name=CmdDel    
  Command4:Caption="存储"   FontSize=12   Name=CmdSave    
  Command5:Caption="取消"   FontSize=12   Name=CmdCancel    
   
  4.在表单新增一属性UpDateMode,用于存储表单当前是否处于可编辑状态(即新增或修改状态),初始值为.f.。    
   
  5.在表单上所有可编辑对象的When   Event方法程序里都写上一句:   RETURN   ThisForm.UpDateMode  
   
  6.设置表单的数据环境的表缓冲模式为“3-开放式行缓冲”。    
   
  7.因为在编写代码时一般要控制定位记录的按钮,以下编写代码假设表单上存在另一组用于定位记录的按钮组,取名为Navigator,其中的四个按钮分别为:    
  首记录:CmdTop;  
  上一记录:CmdPrior;  
  下一记录:CmdNext;  
  末记录:CmdBottom    
   
  8.编写[新增]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.t.   &&进入新增状态后,将该属性的值设为.t.,每个字段可编辑   Append   Blank    
  With   This.Parent    
  .Parent.Refresh    
  .CmdNew.Enabled=.f.    
  .CmdEdit.Enabled=.f.  
  .CmdDel.Enabled=.f.  
  .CmdSave.Enabled=.t.    
  .CmdCancel.Enabled=.t.    
  .Parent.Navigator.SetAll("Enabled",.f.)   &&将记录定位按钮设置为禁止状态    
  .Parent.Text1.SetFocus   &&进入新增状态后,光标自动进入第一个输入框。    
  EndWith    
   
  9.编写[修改]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.t.  
  With   This.Parent    
  .Parent.Refresh   .CmdNew.Enabled=.f.    
  .CmdEdit.Enabled=.f.  
  .CmdDel.Enabled=.f.    
  .CmdSave.Enabled=.t.    
  .CmdCancel.Enabled=.t.    
  .Parent.Navigator.SetAll("Enabled",.f.)    
  .Parent.Text1.SetFocus   EndWith    
   
  10.编写[删除]按钮的Click   Event方法程序的代码:    
  nSure=MessageBox("是否确定删除此记录?",4+32+256,"警告")    
  if   nSure=6    
  Delete    
  Skip    
  If   Eof()    
  Go   Bottom    
  With   This.Parent  
  .Parent.Navigator    
  .CmdTop.Enabled=.t.    
  .CmdPrior.Enabled=.t.    
  .CmdNext.Enabled=.f.    
  .CmdBottom.Enabled=.t.    
  EndWith    
  Else    
  This.Parent.Parent.Navigator.SetAll("Enabled",.t.)    
  EndIf    
  This.Parent.Parent.Refresh    
  EndIf    
   
  说明:为了提高程序运行效率,应将程序的运行环境中的Set   Deleted设置为On,即隐藏删除记录,但是在运行删除命令后,必须移动记录指针,被删除的记录才会隐藏。一般来说在删除记录后应该用TableUpdate()更新原始表,但这里我们开始将数据环境设置为开放式的行缓冲,所以Skip以后会自动更新。    
   
  11.编写[存储]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.f.   &&恢复编辑框的只读状态    
  =TableUpdate(.f.)   &&将缓冲区所编辑的数据写回原始记录。    
  With   This.Parent    
  .CmdNew.Enabled=.t.    
  .CmdEdit.Enabled=.t.    
  .CmdDel.Enabled=.t.    
  .CmdSave.Enabled=.f.    
  .CmdCancel.Enabled=.f.    
  .Parent.Navigator.SetAll("Enabled",.t.)    
  EndWith    
   
  12.编写[取消]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.f.   &&恢复编辑框的只读状态    
  =TableRevent(.f.)    
  If   Eof()    
  Go   Bottom    
  With   This.Parent  
  .Parent.Navigator    
  .CmdTop.Enabled=.t.    
  .CmdPrior.Enabled=.t.    
  .CmdNext.Enabled=.f.    
  .CmdBottom.Enabled=.t.    
  EndWith   Else    
  This.Parent.Parent.Navigator.SetAll("Enabled",.t.)  
  EndIf    
  With   This.Parent    
  .CmdNew.Enabled=.t.    
  .CmdEdit.Enabled=.t.   .CmdDel.Enabled=.t.    
  .CmdSave.Enabled=.f.    
  .CmdCancel.Enabled=.f.    
  .Parent.Refresh    
  EndWith    
   
  13.在Form的load里写:    
  Set   Deleted   On    
  Go   Top    
        在Form的Unload里写:    
  Set   Deleted   Off  
  至此编写一组记录维护的命令按钮组基本完成,你可以将这组命令按钮保存为类方便今后调用。当然在情况发生变化的时候仍需要修改相应的代码以适应新的情况。  
     
     
   
   
   
   
  Top

3 楼IntoWindy(水煮肉片)回复于 2006-03-21 18:12:17 得分 0

11.编写[存储]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.f.   &&恢复编辑框的只读状态    
  =TableUpdate(.f.)   &&将缓冲区所编辑的数据写回原始记录。    
  With   This.Parent    
  .CmdNew.Enabled=.t.    
  .CmdEdit.Enabled=.t.    
  .CmdDel.Enabled=.t.    
  .CmdSave.Enabled=.f.    
  .CmdCancel.Enabled=.f.    
  .Parent.Navigator.SetAll("Enabled",.t.)    
  EndWith    
   
  12.编写[取消]按钮的Click   Event方法程序的代码:    
  ThisForm.UpdateMode=.f.   &&恢复编辑框的只读状态    
  =TableRevent(.f.)    
  If   Eof()    
  Go   Bottom    
  With   This.Parent  
  .Parent.Navigator    
  .CmdTop.Enabled=.t.    
  .CmdPrior.Enabled=.t.    
  .CmdNext.Enabled=.f.    
  .CmdBottom.Enabled=.t.    
  EndWith   Else    
  This.Parent.Parent.Navigator.SetAll("Enabled",.t.)  
  EndIf    
  With   This.Parent    
  .CmdNew.Enabled=.t.    
  .CmdEdit.Enabled=.t.   .CmdDel.Enabled=.t.    
  .CmdSave.Enabled=.f.    
  .CmdCancel.Enabled=.f.    
  .Parent.Refresh    
  EndWith    
   
  用这两段代码是报错!  
  分别是=TableUpdate(.f.)   &&将缓冲区所编辑的数据写回原始记录。  
          和=TableRevent(.f.)    
  这两句,我该怎么解决?Top

相关问题

  • 用向导生成的代码问题?
  • 请教如何实现象VS.NET中代码自动完成中弹出窗口的功能(在线等)
  • [求助]读mfc下向导建立的sdi代码
  • 用向导生成的查找功能。。
  • 奇怪的现象!请看原代码!
  • 怎样用C++ Builder实现象证券交易软件中的证券代码拼音首字符输入功能啊?(我只要这么多分能给了)
  • 谁有CPropertySheet的向导型的(SetWizardMode)编程实例的源代码??
  • ATL开发DLL时,下面这条代码是怎么通过向导产生
  • 再问如何用代码实现向导那样对数据表的控制?!
  • 求源代码:计时功能

关键词

  • .net
  • 代码
  • 向导
  • 修改
  • 按钮
  • enabled
  • endwith
  • cmdnew
  • cmdedit
  • setall

得分解答快速导航

  • 帖主:IntoWindy
  • TERRYYRRET
  • apple_8180

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo