| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2458 人关注过本帖
标题:这个算动态吗?
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
而且发现BindEvent()的一个不足就是把命令按钮的CLICK托管到Form后 只要在Form上任意一点点击都将实现点击结果。。。。
这个。。这个。。

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:19
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-23 22:18:23的发言:

都可以,你不知道哪里不对劲而已。

那再去试试。。。

原来要放到IF --ENDIF 中间


[ 本帖最后由 有容就大 于 2012-9-23 22:22 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:20
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-23 22:22:35的发言:


把那个Click事件换成别的自定义名字,不用内置的事件名字也可以。

是这样吧 哈哈 效果不错。。
程序代码:
        If  .Key.ask_Button == .T.
                           .AddObject("Ctnr_Button","CommandButton")
                    With This.Ctnr_Button
                          .Height = 30
                          .Caption = This.Key.btn_Caption
                          .Left = This.Ctnr_Text.Left + This.Ctnr_Text.Width + ln_Space
                          .Top = This.Key.chg_Height / 2 - .Height / 2                             
                                  .Width = 100                                 
                               EndWith
                            Do case
                                Case  This.Key.ID == "Number"
                                BindEvent(.Ctnr_Button, "Click", This, "Click_Number")
                            EndCase
                           EndIf                         
                           .SetAll("Visible", .T.)
                           .SetAll("FontSize", 16)
                           .SetAll("Alignment", 2) 
                           .SetAll("FontBold", 1)
                           .Height = .Key.chg_Height       
            EndWith
        EndProc    
       
        Procedure Click_Number
            MessageBox("Hhahaha")
        EndProc

加强了下 效果很好 老大 敬茶

[ 本帖最后由 有容就大 于 2012-9-23 22:29 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:25
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-23 22:25:57的发言:

你34楼的写法不用那样的,像我33楼那样就可以,不用总用BindEvent(),那是特殊情况下才用的。

问题是我先自定义一个容器类 里面用addObject()分别添加了一个 Label 一个 TextBox 一个 CommandButton
然后才在MainForm里 又用循环addObject()了8个自定义容器类对象
如果直接在Form里 Add Object XXX As OOO with .....
那么就要add 3 * 8 = 24个对象。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:33
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-23 22:37:15的发言:

在自定义容器中固定3个控件,从这个类派生8个实例对象,每个对象都天生带3个控件,亦即24个控件。

那这样 如果要改变容器里面的某控件大小的时候 就要额外的写init代码 24个要改变10个以上就很繁琐了吧
如果还要移除某个控件 又要额外写removeObject代码 如果在移除的地方在添加一个不一样的控件又要写代码
那我还不如用数组参数直接传算了。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


老大 这个ADD OBJCET 能用结构体数组做参数传吗? 后面那个With cPropertyList 能写成With ga_Struct[i]吗?

梅尚程荀
马谭杨奚







                                                       
2012-09-23 22:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 49楼 TonyDeng
为了显示 结果 我把你的程序稍作了修改 基本上能理清了
不过就是那个Valid事件没搞懂 按理说TextBox是空的话 焦点就还在他上面 不空就焦点跑走
那为什么我输入0后提示一个无效的输入 然后就关不掉这个窗口? 我ALT + CTRL + DEL 了好多次啊

程序代码:
Clear All
Main()

Procedure Main()
    Local lo_MainForm

    lo_MainForm = NewObject("C_Form")
    lo_MainForm.Show
    Read Events
    Return

EndProc


DEFINE CLASS C_Form AS Form
    AutoCenter = .T.
    Width = 600
    Height = 600
        PROCEDURE Init
            FOR i = 1 TO 8
                lc_Name = "xx" + TRANSFORM(i)
                This.AddObject(lc_Name, "myClass")
                WITH This.&lc_Name
                    .Caption = "Caption + " + TRANSFORM(i)
                    .Height = 20 + 5 * (i - 1)
                    .Top = .Height * (i - 1)
                    .Width = 300
                    .Visible = .T.
                    .Resize
                ENDWITH
            NEXT
        ENDPROC

    PROCEDURE Click
        ThisForm.SetAll("Caption", "bbb")
    ENDPROC

ENDDEFINE

DEFINE CLASS myClass AS Container
    Caption = ""
    ADD OBJECT Label1 AS Label WITH Caption = "aaa", Left = 10, Top = 0, Width = 40, Height = 20
    ADD Object TextBox1 AS TextBox with Left =200, value = 10, Top = 0, Width = 40, Height = 20

    PROCEDURE Resize
        WITH This
            .SetAll("Height", .Height)
        ENDWITH
    ENDPROC

    PROCEDURE TextBox1.Valid
    With This
        IF EMPTY(This.Value)
            RETURN .F.
        EndIf
        EndWith

    EndProc
   

    Procedure Destroy
        Clear Events
    EndProc


ENDDEFINE
---
图片附件: 游客没有浏览图片的权限,请 登录注册


梅尚程荀
马谭杨奚







                                                       
2012-09-23 23:44
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用sdta在2012-9-24 00:00:42的发言:

呵呵 这么改输入0不会出现无效输入的提示 但是仍然关闭不了 窗口 。不理解其中的机理
 为什么有时候 窗口上面的X用不了?

梅尚程荀
马谭杨奚







                                                       
2012-09-24 09:03
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 54楼 bccn201203
试了下 还是不成 on shutdown quit的quit是白色的 说明不是系统命令?

梅尚程荀
马谭杨奚







                                                       
2012-09-24 09:58
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 56楼 bccn201203
都试过了
只要把一个文本框的内容清空 按enter光标还在这个地方 出现一个0 这时是无法关闭窗口的
如果重新在这个文本框输入不是0的值 按enter 光标下移 而且这个能把窗口关掉 但是貌似出现没退出?
图片附件: 游客没有浏览图片的权限,请 登录注册



梅尚程荀
马谭杨奚







                                                       
2012-09-24 10:57
快速回复:这个算动态吗?
数据加载中...
 
   



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

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