| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2604 人关注过本帖
标题:[求助]在记录前/后插入记录
取消只看楼主 加入收藏
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
回复 20楼 茵梦湖
请问,你这是用RightClick事件中调用菜单实现的吧,插入的代码是用insert吗?
2011-07-25 20:02
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
又出问题了,帮忙找下错哈,全用代码写表单和控件不容易啊。
程序代码:
form_Stu = CREATEOBJECT("_Stu")
form_Stu.Show
READ EVENTS
RETURN

DEFINE CLASS _Stu AS Form
    AutoCenter=.T.
    BackColor=RGB(181,221,243)
    BorderStyle=0
    Caption = "学生信息管理"
    Height=600
    MaxButton=.F.
    ShowWindow=2
    Width=800
    WindowState = 0
    ADD OBJECT XskGrid AS grid
    ADD OBJECT Sp as Shape WITH;
      Anchor = 240
      BackStyle = 0
      Height = 30
      Width = 200
      Left = (thisform.Width-this.Width)/2
      Top = 10
    ADD OBJECT Lb as Label WITH;
      Alignment = 2
      Anchor = 240
      AutoSize = .T.
      BackStyle = 0
      Caption = "学生信息管理"
      FontBold = .T.
      FontSize = 12
      Height = 20
      Left = (thisform.Width-this.Width)/2
      Top = 10
    ADD OBJECT Img1 as Image WITH;
      BackStyle = 0
      Height = 16
      Width = 16
      Left = thisform.Width-40
      Top = 10
    ADD OBJECT Img2 as Image WITH;
      BackStyle = 0
      Height = 16
      Width = 16
      Left = thisform.Width-20
      Top = 10    
    PROCEDURE Load
        USE h:\vfp\data\tables\xsk ORDER xh IN 0
    ENDPROC
    PROCEDURE Arrange
         WITH This.XskGrid
             .RecordMark = .F.
             .Top = 50
             .Left = 5
             .Height = This.Height - .Top - 5     &&报错在这里,说表达式计算结果为一非法值。如果把ADD OBJECT Sp as Shape
             .Width = This.Width - .Left - 5      &&到ADD OBJECT Img2 as Image这几段代码去掉就不会报错。
         ENDWITH
         WITH This.Img1.Click
             thisform.XskGrid.AllowCellSelection= .F. 
         ENDWITH
         WITH This.Img2.Click
             thisform.XskGrid.AllowCellSelection= .T. 
             thisform.Release
         ENDWITH
    ENDPROC 
    
    PROCEDURE Activate
         This.Arrange         
     ENDPROC 
    
    PROCEDURE Resize
         This.Arrange
    ENDPROC
        
    PROCEDURE Unload
        CLEAR EVENTS
        CLOSE TABLES ALL
    ENDPROC

ENDDEFINE
2011-07-25 20:08
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
Arrange里面只定义了Grid的宽高,我是在Add Object的同时给其他控件定义属性。
2011-07-25 20:23
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
  那个分号可以不要,在帮助里面示例就是这样写的。问题解决了,和你说的一样,应该先在arrange里面定义控件大小,再在Activate里面引用arrange过程,直接定义控件大小会出错。还有,上面的代码里面Click事件不能直接这样写,要写在Procedure里面。
  感觉用代码编表单的时候位置要调整好还是比较麻烦的,我想可不可以结合一下,先把控件在表单里面调整好,然后再根据位置再写代码。
2011-07-25 20:39
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
我改过的是这样的,和你改过的结果是一样的。
程序代码:
form_Stu = CREATEOBJECT("_Stu")
form_Stu.Show
READ EVENTS
RETURN

DEFINE CLASS _Stu AS Form
    AutoCenter=.T.
    BackColor=RGB(181,221,243)
    BorderStyle=0
    Caption = "学生信息管理"
    Height=600
    MaxButton=.F.
    ShowWindow=2
    Width=800
    WindowState = 0
    ADD OBJECT XskGrid AS grid
    ADD OBJECT Sp as Shape
    ADD OBJECT Lb as Label
    ADD OBJECT Img1 as Image
    ADD OBJECT Img2 as Image
    PROCEDURE Load
        USE h:\vfp\data\tables\xsk ORDER xh IN 0
    ENDPROC
    PROCEDURE Arrange
         WITH This.XskGrid
             .RecordMark = .F.
             .Top = 50
             .Left = 5
             .Height = This.Height - .Top - 5
             .Width = This.Width - .Left - 5
         ENDWITH
         WITH This.Sp
              .BackStyle = 0
              .Height = 30
              .Width = 200
              .Left = (thisform.Width-200)/2
              .Top = 10
         ENDWITH
         WITH This.Lb
               .Alignment = 2
               .AutoSize = .T.
               .BackStyle = 0
               .Caption = "学生信息管理"
               .FontBold = .T.
               .FontSize = 12
               .Height = 20
               .Left = (thisform.Width-100)/2
               .Top = 15
         ENDWITH
         WITH This.Img1
               .BackStyle = 0
               .Height = 16
               .Width = 16
               .Left = thisform.Width-40
               .Top = 10
         ENDWITH
         WITH This.Img2
               .BackStyle = 0
               .Height = 16
               .Width = 16
               .Left = thisform.Width-20
               .Top = 10
         ENDWITH         
    ENDPROC
    
    PROCEDURE Img1.Click
         thisform.XskGrid.AllowCellSelection= .F.        
    ENDPROC
    
    PROCEDURE Img2.Click
         thisform.XskGrid.AllowCellSelection= .T. 
         thisform.Release       
    ENDPROC
    
    PROCEDURE Activate
         This.Arrange         
    ENDPROC 
    
    PROCEDURE Resize
         This.Arrange
    ENDPROC
        
    PROCEDURE Unload
        CLEAR EVENTS
        CLOSE TABLES ALL
    ENDPROC

ENDDEFINE
2011-07-25 20:47
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
呵呵,这就是用代码的好处
2011-07-25 21:41
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
我是看你之前帮我写的那几段代码加上帮助文档慢慢学着写的,还不熟,算是先入个门吧。
2011-07-25 21:43
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
  再一个问题,数据环境一般都是为表单建立的,能不能单独为一个page建一个数据环境?因为我不想各个page之间的数据有关联,也就是在每个的activate事件中能否设置一次数据环境,刚才试了下,不行。page没有Load事件,有没什么别的方法解决这个问题?
  还有一个:FORM1和FORM2各有不同的数据环境,在FORM1中执行FORM2,同时FORM1没有RELEASE,执行完FORM2后返回FORM1,这样FORM1的数据环境如果不重新LOAD就会出错,可不可以不RELEASE FORM1的情况下解决这个问题?

[ 本帖最后由 lyxc34 于 2011-7-25 22:27 编辑 ]
2011-07-25 22:21
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
刚才看了帮助里面的数据工作期的介绍,可以通过datasession来设置私有工作期,不过我设置完之后他就提示“文件正在使用”,我给USE后面加shared或者again都不行,单独运行程序是没有问题的。这说明还是数据环境之前有冲突吧。
2011-07-26 10:16
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
不同表单用不同数据环境,不用DataSession用什么?
2011-07-26 22:27
快速回复:[求助]在记录前/后插入记录
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021866 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved