| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2036 人关注过本帖
标题:双管齐下,表单和控件按一定比例放大
只看楼主 加入收藏
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
结帖率:91.53%
收藏
已结贴  问题点数:100 回复次数:16 
双管齐下,表单和控件按一定比例放大
还是要做这样的表单,但考虑最终客户的眼神可能不好,有可能需要放在表单,并且按一定比例规则放大表单上的控件和字体
图片附件: 游客没有浏览图片的权限,请 登录注册


考虑到  前面T版已经做了等比例调整控件位置的示例  但相应的字号没有跟着放大

为此  我特意研究了一下WORD中的字号,11可以,12可以,11.5也可以,但11.6就非法

我又回到VFP中  字号在设计器中   只能输入整法   小数点部分自动舍掉   

看来整个表单的放大比例规则   是要被字号制约的

于是  我定义了一系列基础字号   在这些基础字号上进行比例的计算   和控件的定位

不知道这样的思路   对不对?

    minLabelFontSize=8    &&定义最小标签的字号
    minOtherFontSize=9    &&定义最小文本框、列表框、按钮字号
    minTitleFontSize=18    &&定义标题标签小号字号
    minDistance=2    &&定义控件间最小间距
    minControlTop=24    &&定义最顶端控件的最小顶边
    minControlLeft=12    &&定义最左端控件的最小侧边距

[此贴子已经被作者于2015-12-21 18:39编辑过]

搜索更多相关主题的帖子: 小数点 眼神 
2015-12-21 18:37
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:10 
用户的要求是至高无上的,可怜难煞了程序员。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-21 19:21
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
如果是我,会要求用户改变电脑的分辨率来解决。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-21 19:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:40 
VFP有个相关函数 FONTMETRIC(),摸索一下应该能找到窍门。
2015-12-21 19:53
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
这样的想法很好
2015-12-21 19:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
很难看的

授人以渔,不授人以鱼。
2015-12-21 21:18
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
回复 6楼 TonyDeng
先不考虑难看的问题   先要做到   做出来不好看   可以不要   但有想法   就要试着做一下

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-21 22:10
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
手工“计算”了一张表单,发现三个问题,和一个思路
问题一:为什么Line1,2,3,4都是歪的呢?
问题二:刚Load的时候,标题和账单号都挤到一块了,Resize或再Activate,才能得出正确结果
问题三:我想给表单上所有控件加个MYRIGHT属性,,,,,,没成功,有可能做到吗?
思路:把类似正中标题,微调和它的说明Label这样的控件,都增加一个行属性,与下一行间的距离,要以上面同一行最大控件的底边和下面同一行最大控件的顶边为依据,整体设置“行间距”,就像WORD排版一样,这有可能让我的“放大控件和字号”更容易实现

下面是代码,太乱了。。。  困,明天继续

CLEAR ALL
CLOSE PROCEDURES
SET PROCEDURE TO "MyForm", "MyLogin","otherForm"
runShouliaoForm()

CLOSE PROCEDURES
&&CLOSE ALL
return

PROCEDURE runShouliaoForm
    PUBLIC  ShouliaoForm
    ShouliaoForm=CREATEOBJECT("m1Form")
    ShouliaoForm.show
    READ EVENTS
    RETURN
ENDPROC

DEFINE CLASS m1Form as myForm
    showWindow=2
    caption="功能1——收料单"
    autoCenter=.t.
    windowType=1
    minLabelFontSize=8    &&定义最小标签的字号
    minOtherFontSize=9    &&定义最小文本框、列表框、按钮字号
    minTitleFontSize=18    &&定义标题标签小号字号
    minDistance=2    &&定义控件间最小间距
    minControlTop=24    &&定义最顶端控件的最小顶边
    minControlLeft=12    &&定义最左端控件的最小侧边距
    formIsMinSize=.t.
   
    ADD OBJECT titleLabel1 as label WITH caption="收",autoSize=.t.
    ADD OBJECT titleLabel2 as label WITH caption="料",autoSize=.t.
    ADD OBJECT titleLabel3 as label WITH caption="单",autoSize=.t.
    ADD OBJECT howLineLabel as label WITH caption="本单有几项材料?",autoSize=.t.
    ADD OBJECT howManyLine as spinner WITH spinnerHighValue=4,spinnerLowValue=1,value=1
    ADD OBJECT addNewItemTo as checkBox WITH caption="将新列表项添加到相应库",autoSize=.t.
    ADD OBJECT zhangdanTag as label WITH caption="账单号:",autoSize=.t.
    ADD OBJECT zhangdanLabel as label WITH caption="0123456789ABCDEFGH",autoSize=.t.
    ADD OBJECT line1 as line WITH borderWidth=3,left=this.minControlLeft-this.minDistance
    ADD OBJECT gydwLabel as label WITH caption="供应单位:",autoSize=.t.
    ADD OBJECT gydwCbx as comboBox
    ADD OBJECT slrqTag as label WITH caption="收料日期:",autoSize=.t.
    ADD OBJECT slrqLabel as label WITH caption="2015年12月25日",autoSize=.t.
    ADD OBJECT line2 as line WITH borderWidth=1,left=this.minControlLeft-this.minDistance
    ADD OBJECT clflTag as label WITH caption="材料分类",autoSize=.t.
    ADD OBJECT clmcTag as label WITH caption="名称型号",autoSize=.t.
    ADD OBJECT jldwTag as label WITH caption="计量单位",autoSize=.t.
    ADD OBJECT ssslTag as label WITH caption="材料分类",autoSize=.t.
    ADD OBJECT grdjTxt as label WITH caption="购入单价",autoSize=.t.
    ADD OBJECT grjeTxt as label WITH caption="购入金额",autoSize=.t.
    ADD OBJECT bzdjTxt as label WITH caption="标准单价",autoSize=.t.
    ADD OBJECT bzjeTxt as label WITH caption="标准金额",autoSize=.t.
    ADD OBJECT cjTxt as label WITH caption="差价",autoSize=.t.
    ADD OBJECT bgddCbx as label WITH caption="保管地点",autoSize=.t.
    ADD OBJECT line3 as line WITH borderWidth=1,left=this.minControlLeft-this.minDistance
    ADD OBJECT canzhaoTextBox as textBox WITH autoSize=.t.,visible=.f.  &&两个参照性控件
    ADD OBJECT canzhaoComboBox as comboBox WITH autoSize=.t.,visible=.f.   
    ADD OBJECT line4 as line WITH borderWidth=1,left=this.minControlLeft-this.minDistance
    ADD OBJECT rtnMainBtn as commandButton WITH caption="返回主程序",autoSize=.t.
   
    PROCEDURE Arrange
        WITH this    &&想给所有控件增加一个“右”属性,怎么搞定?
            .setall("myRight",this.width+.width/2,"label")
        ENDWITH

   
        IF this.formIsMinSize
            WITH this.titleLabel2
                .fontSize=this.minTitleFontSize
                .top=this.minControlTop
                .left=(this.width-.width)/2    &&放大后此项不变  首次运行为什么不居中呢  什么情况?
            ENDWITH
            WITH this.titleLabel1
                .fontSize=this.minTitleFontSize
                .top=this.minControlTop
                .left=this.width/2-.width*2.5
            ENDWITH
            WITH this.titleLabel3
                .fontSize=this.minTitleFontSize
                .top=this.minControlTop
                .left=this.width/2+.width*1.5
            ENDWITH
            WITH this.howLineLabel
                .fontSize=this.minOtherFontSize
                .top=this.titleLabel1.top+this.titleLabel1.height/2-.height/2    &&参照标题的垂直正中
                .left=this.width-(this.width-(this.width/2+.width/2))/4*3
            ENDWITH  
            WITH this.howManyLine
                .fontSize=this.minOtherFontSize
                .top=this.titleLabel1.top+this.titleLabel1.height/2-.height/2
                .left=this.width-(this.width-(this.width/2+.width/2))/4
                .width=.height*1.5
            ENDWITH
            WITH this.addNewItemTo
                .fontSize=this.minOtherFontSize
                .top=this.titleLabel1.top+this.titleLabel1.height+this.minDistance*2
                .left=this.minControlLeft+this.minDistance*2
            ENDWITH
            WITH this.zhangdanTag
                .fontSize=this.minOtherFontSize
                .top=this.titleLabel1.top+this.titleLabel1.height+this.minDistance*2
                .left=this.width/2
            ENDWITH
            WITH this.zhangdanLabel
                .fontSize=this.minOtherFontSize
                .top=this.titleLabel1.top+this.titleLabel1.height+this.minDistance*2
                .left=this.width/2+this.zhangdanTag.width+this.minDistance*2
            ENDWITH
            WITH this.line1
                .width=this.width-.left*2
                .top=this.zhangdanLabel.top+this.zhangdanLabel.height+this.minDistance*2
            ENDWITH
            WITH this.gydwLabel
                .fontSize=this.minOtherFontSize
                .top=this.line1.top+this.line1.height+this.minDistance*2
                .left=this.addNewItemTo.left
            ENDWITH
            WITH this.gydwCbx
                .fontSize=this.minOtherFontSize
                .top=this.gydwLabel.top+this.gydwLabel.height/2-.height/2
                .left=this.gydwLabel.left+this.gydwLabel.width+this.minDistance*2
            ENDWITH
            WITH this.slrqTag
                .fontSize=this.minOtherFontSize
                .top=this.gydwLabel.top
                .left=this.width/2-.width/5*4
            ENDWITH
            WITH this.slrqLabel
                .fontSize=this.minOtherFontSize
                .top=this.gydwLabel.top
                .left=this.slrqTag.left+this.slrqTag.width+this.minDistance*2
            ENDWITH
            WITH this.line2
                .width=this.width-.left*2
                .top=this.slrqLabel.top+this.slrqLabel.height+this.minDistance*2
            ENDWITH
            WITH this.clflTag
                .fontSize=this.minLabelFontSize
                .top=this.line2.top+this.line2.height+this.minDistance*2
                .left=this.minControlLeft
            ENDWITH
            WITH this.line3
                .width=this.width-.left*2
                .top=this.clflTag.top+this.clflTag.height+this.minDistance*2
            ENDWITH
            WITH this.canzhaoTextBox
                .fontSize=this.minOtherFontSize
                .top=this.line3.top+this.line3.height+this.minDistance*2
                .left=this.minControlLeft
            ENDWITH
            WITH this.canzhaoComboBox
                .fontSize=this.minOtherFontSize
                .top=this.line3.top+this.line3.height+this.minDistance*2
                .left=this.canzhaoTextBox.left+this.canzhaoTextBox.width+this.minDistance*2
            ENDWITH
            WITH this.line4
                .width=this.width-.left*2
                .top=this.canzhaoComboBox.top+this.canzhaoComboBox.height+this.minDistance*2
            ENDWITH
            WITH this.rtnMainBtn
                .fontSize=this.minOtherFontSize
                .top=this.line4.top+this.line4.height+this.minDistance*2
                .left=this.width-this.minControlLeft-.width
            ENDWITH
            
            this.height=this.rtnMainBtn.top+this.rtnMainBtn.height+this.minControlLeft
            &&this.width=this.height*2
                        
        ELSE
            tempFormWidth=this.width
        ENDIF
    ENDPROC
   
    PROCEDURE Activate
        This.Arrange
    ENDPROC
   
    PROCEDURE Resize
        This.Arrange
    ENDPROC
   
   
    &&根据微调按钮,增加条目开始
    &&根据微调按钮,布局结束
   
    PROCEDURE rtnMainBtn.click
        RELEASE thisform
    ENDPROC
        
    PROCEDURE Destroy
        MESSAGEBOX("模块1表单成功销毁了",64,"123")
        CLEAR EVENTS
    ENDPROC
   
ENDDEFINE

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-22 03:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
有点复杂
2015-12-22 08:22
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
想法是好的,道路是曲折的。赞一个。
2015-12-22 09:33
快速回复:双管齐下,表单和控件按一定比例放大
数据加载中...
 
   



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

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