| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3634 人关注过本帖
标题:文本框设置成数值型后怎么让文本框不出来0?
只看楼主 加入收藏
seekyou3
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2011-5-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:19 
文本框设置成数值型后怎么让文本框不出来0?
在表单的init 中设置;thisform.text1.value=0
在运行表单时那个文本框里会出来一个0.
怎么把这个0去掉了?
搜索更多相关主题的帖子: 文本框 
2011-07-09 17:53
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
呵呵,text默认的是文本格式,你给他赋了一个初始值0,这个0不是数字0,而是字符,你如果想让他初始值为空的话,改成:
thisform.text1.value=""

  其实这个值不用写在int事件里面,默认的就是空值,只有在需要重置TEXT值的时候才在其他事件中用到这个,例如你查询的时候接收了TEXT的值,然后要再次查询,可以放一个重置按钮,CLICK代码写上上面的这行,这样点一下重置,文本框以前输的东西就清空了。或者直接在text1的GotFocus事件中写上这一行,那样每次重新点进文本框的时候会自动清空,还可以设置自动记忆功能,这些都可以在属性里面找到。

[ 本帖最后由 lyxc34 于 2011-7-9 18:46 编辑 ]
2011-07-09 18:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
設文本框的 Format = "Z" 即可

授人以渔,不授人以鱼。
2011-07-09 19:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
設文本框的 Format = "Z" 即可

授人以渔,不授人以鱼。
2011-07-09 19:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在TextBox控件的事件中這樣設:

程序代码:
* 注意:是TextBox的Init事件,它將在此控件實例化的時候執行,在Form(父容器)的Init之前
* 若在Form.Init事件裏寫Text1.Value = 0,出錯,因為此時還沒有Text1對象!
PROCEDURE Init
    WITH This
        .Value = 0            && 設定爲數値型,也可直接賦數値,若綁定字段,無需這個,寫 .ControlSource = "字段名" 即可
        .Format = "Z"         && 當値爲零時顯示空白
    ENDWITH
ENDPROC


這樣的設置、代碼,邏輯上應該在TextBox初始化時執行,那麽事實上這些代碼就應該在這個位置上寫,這就是程序的邏輯學。如果這樣的代碼到處寫,不在該在的位置,查錯和維護時就到處找。自己寫的程序,兩三個月後可能仍有印象,但時間長了,就記不起這種不規範的位置,按照常理就找不到,只能亂翻。而如果是別人維護你的代碼,發現你這樣寫,包管罵的你狗血淋頭。

[ 本帖最后由 TonyDeng 于 2011-7-9 21:34 编辑 ]

授人以渔,不授人以鱼。
2011-07-09 21:05
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
我记得看到别人文章里有提到,事件的发生顺序应该是先查检查FORM里面控件的INIT事件,如果有就执行,没有就执行FORM的INIT事件,所以如果在FORM的INIT里面写thisform.TEXT.Value=""应该不会报错吧,而且我做的表单都是先用父容器初始化子控件的属性,难道做错了?你说的意思是控制哪个控件的代码就应该写在哪个控件的事件里面?
2011-07-10 01:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
父容器的Init事件在後,其中控件的Init事件在先,我上面第一行寫的是對的,第二行有問題。

在父容器中一次性設置所有子控件的屬性,可以集中管理,但若不是統一處理的,還是各自歸位的好,如果修改程序時刪掉了某個控件,可視化環境中只刪掉這個控件所附帶的屬性和方法、事件,但不會動父容器Init中的代碼,這個時候就出錯了。

可視化編程時,編程工具替你管理控件和代碼,但不會智能到去干涉別的控件和代碼。用這種環境的時候,最好控件的代碼歸控件自己管理。但我寫程序是不用可視化環境的,一個模塊全寫在一個PRG文件上,哪裡幹了什麽事,一眼看到,故不在意這些。當時想壇上人多數用可視化編程,就隨手加了第二行那句話,出問題了。

授人以渔,不授人以鱼。
2011-07-10 01:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
剛才測試了一下,VFP9.0(SP2)環境下TextBox的Format="Z"設置不正常,一旦文本框獲得焦點,0就仍然顯示出來,保留0不動,讓光標離開,又恢復空白。根據幫助信息,說這個屬性只在@GET句子中有效。請用VFP6的朋友測試一下。

授人以渔,不授人以鱼。
2011-07-10 02:33
seekyou3
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2011-5-7
收藏
得分:0 
回复 8楼 TonyDeng
...1点多都还在回贴。就这精神也是可敬。其实我的问题不是在 是在哪里写了这个代码,是想怎么知道在运行的时候能让原来是thisform.text1.value=0   的这个数值型的文本框也能像字段型value=''一样显示出来。
2011-07-11 09:11
lyxc34
Rank: 2
等 级:论坛游民
帖 子:139
专家分:50
注 册:2011-7-3
收藏
得分:0 
回复 7楼 TonyDeng
  一个程序管所有模块以我目前的水平还达不到,而且我感觉VFP既然是Visual的,那用可视化环境编程应该是他的优势,特别是对于非本专业的人学习使用。
  只要自己清楚父容器和子控件各事件发生的顺序,知道先干什么后干什么,对于初始化等集中事件就在INIT里集中写,对于实时交互等就在控件事件里面分开写,两者结合,维护起来应该也不难,而且也便于理解。
  不过在实现很多功能的时候经常会碰到用一种子控件控制另一种子控件的事情(特别是在控件数量和用到的事件很多的时候),那要改起来就比较麻烦了,例如在一表单里面用一个GRID表做为输出显示窗口,有时候用SET FILTER TO过滤显示,有时候又要用查询显示,还有时候要输入不同格式的表格,如何控制好数据源一直很头疼。用过WITH....ENDWITH修改格式,可是那样的话要改的属性很多,特别是还要改RECORDSOURCE,总感觉不受控制,经常改了去不显示。
    VFP在删除重命名的问题上感觉很不给力,每次重命名后得改动好多地方。我感觉可以像Authorware那样,一个对象名字改动之后,那所有引用过该对象的事件会自动重命名,那样可以方便很多。

[ 本帖最后由 lyxc34 于 2011-7-11 10:27 编辑 ]
2011-07-11 10:23
快速回复:文本框设置成数值型后怎么让文本框不出来0?
数据加载中...
 
   



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

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