| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1978 人关注过本帖
标题:双管齐下,表单和控件按一定比例放大
只看楼主 加入收藏
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
先来解决第一个问题   为什么添加的Line控件是歪的

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

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-22 09:51
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:650
专家分:2156
注 册:2014-2-7
收藏
得分:50 
对于line控件来说,是在Height和Width指定的矩形中画对角线。明白了吗?所以,要想在水平方向上伸缩,只修改其 width,不要修改其 height(height=0)

[此贴子已经被作者于2015-12-22 10:34编辑过]


泉城飞狐
2015-12-22 10:28
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
回复 12楼 liuxingang28
明白了

ADD OBJECT line4 as line WITH borderWidth=1,left=this.minControlLeft-this.minDistance,height=0

强制HEIGHT=0,才能得到水平的直线   呵呵    谢谢

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-22 11:22
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
下面分步解决思路  先得到每次调整的宽、高比例
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
    beforeWidth=this.width
    currWidth=this.width
    beforeHeight=this.Height
    currHeight=this.Height
    minWidth=this.Width
    minHeight=this.Height
   
    ADD OBJECT infoLabel as label WITH backColor=RGB(222,222,222),wordWrap=.t.,caption="123"
   
    PROCEDURE init
        thisformSize="窗体加载时高为"+ALLTRIM(STR(thisform.height))+",宽为"+ALLTRIM(STR(thisform.width))
        MESSAGEBOX(thisformSize,64,"123")
    ENDPROC
   
    PROCEDURE Arrange
        WITH this.infoLabel
            .top=this.height/10
            .left=this.width/10
            .width=this.width/10*8
            .height=this.height/10*8
        ENDWITH
        LOCAL tempFormWidth,tempFormHeight
        tempFormWidth=this.width
        tempFormHeight=this.height
        IF (this.beforeWidth<>tempFormWidth) .or. (this.beforeHeight<>tempFormHeight)
            this.currWidth=tempFormWidth
            this.currHeight=tempFormHeight
            LOCAL labelMess
            labelMess="窗体加载时高为:"+ALLTRIM(STR(thisform.minheight))+",宽为:"++ALLTRIM(STR(thisform.minWidth))
            labelMess=labelMess+CHR(13)
            labelMess=labelMess+"窗体调整前高为:"+ALLTRIM(STR(thisform.beforeHeight))+",宽为:"++ALLTRIM(STR(thisform.beforeWidth))
            labelMess=labelMess+CHR(13)
            labelMess=labelMess+"窗体调整后高为:"+ALLTRIM(STR(thisform.currHeight))+",宽为:"++ALLTRIM(STR(thisform.currWidth))
            labelMess=labelMess+CHR(13)
            labelMess=labelMess+"窗体高的缩放比例为:"+ALLTRIM(STR(thisform.currHeight/thisform.beforeHeight,10,4))
            labelMess=labelMess+CHR(13)
            labelMess=labelMess+"窗体宽的缩放比例为:"+ALLTRIM(STR(thisform.currWidth/thisform.beforeWidth,10,4))
            thisform.infoLabel.caption=labelMess
        ENDIF
        this.beforeWidth=this.width
        this.beforeHeight=this.height
    ENDPROC
   
    PROCEDURE Activate
        This.Arrange
    ENDPROC
   
    PROCEDURE Resize
        This.Arrange
    ENDPROC
        
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
ENDDEFINE

[此贴子已经被作者于2015-12-22 12:47编辑过]


报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-22 11:27
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
程序代码:
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
    beforeWidth=this.width
    currWidth=this.width
    beforeHeight=this.Height
    currHeight=this.Height
    minWidth=this.Width
    minHeight=this.Height
   
    ADD OBJECT infoLabel1 as label WITH backColor=RGB(222,222,222),wordWrap=.f.,caption="123",autoSize=.t.
    ADD OBJECT infoLabel2 as label WITH backColor=RGB(222,222,222),wordWrap=.f.,caption="456"
    ADD OBJECT infoLabel3 as label WITH backColor=RGB(222,222,222),wordWrap=.f.,caption="789"
   
    PROCEDURE Arrange
        WITH this.infoLabel1
            .top=this.height/10
            .left=this.width/10
            &&.width=this.width/10*8
            .height=this.height/10-1
        ENDWITH
        WITH this.infoLabel2
            .top=this.height/10*2
            .left=this.width/10
            .width=this.width/10*8
            .height=this.height/10-1
        ENDWITH
        WITH this.infoLabel3
            .top=this.height/10*3
            .left=this.width/10
            .width=this.width/10*8
            .height=this.height-this.height/10*4
        ENDWITH
        LOCAL tempFormWidth,tempFormHeight
        tempFormWidth=this.width
        tempFormHeight=this.height
        IF (this.beforeWidth<>tempFormWidth) .or. (this.beforeHeight<>tempFormHeight)
            this.currWidth=tempFormWidth
            this.currHeight=tempFormHeight
            LOCAL labelMess1,labelMess2,labelMess3
            labelMess1="窗体加载时高为:"+ALLTRIM(STR(thisform.minheight))+",宽为:"++ALLTRIM(STR(thisform.minWidth))
            thisform.infoLabel1.caption=labelMess1
            labelMess2="窗体调整前高为:"+ALLTRIM(STR(thisform.beforeHeight))+",宽为:"++ALLTRIM(STR(thisform.beforeWidth))
            thisform.infoLabel2.caption=labelMess2
           
            FOR tempFontSize=8 TO 72 STEP 0.5
                this.InfoLabel1.fontSize=tempFontSize
                IF (this.infoLabel1.height>this.infoLabel2.height).or.(this.infoLabel1.width>this.infoLabel2.width)
                    this.infoLabel1.fontSize=tempFontSize-0.5
                    RETURN
                ENDIF
            ENDFOR
            
            labelMess3="窗体调整后高为:"+ALLTRIM(STR(thisform.currHeight))+",宽为:"++ALLTRIM(STR(thisform.currWidth))
            labelMess3=labelMess3+CHR(13)
            labelMess3=labelMess3+"窗体高的缩放比例为:"+ALLTRIM(STR(thisform.currHeight/thisform.beforeHeight,10,4))
            labelMess3=labelMess3+CHR(13)
            labelMess3=labelMess3+"窗体宽的缩放比例为:"+ALLTRIM(STR(thisform.currWidth/thisform.beforeWidth,10,4))
            thisform.infoLabel3.caption=labelMess3
           
           
        ENDIF
        this.beforeWidth=this.width
        this.beforeHeight=this.height
    ENDPROC
   
    PROCEDURE Activate
        This.Arrange
    ENDPROC
   
    PROCEDURE Resize
        This.Arrange
    ENDPROC
       
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
ENDDEFINE 

已经实现控件随窗体调整大小,控件上的字号,随控件大小以0.5步长递增到最大尺寸,需要找一个同样的控件做参照物  。。。。。。

有没有更好的算法,或者,,,做一个能传参的过程或者方法  把表单上现有的控件逐个扔进去,按比例规则变形后,再拿出来  

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-12-22 13:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
説你又不信邪,不説內容字體無法與控件邊界尺寸同步伸縮的問題,就是字體放大到一定范圍會失真,就可以讓這個設想報廢,何况太大的字體是不友好的。與其搞伸縮,不如針對終端顯示器設計較大字體的界面,如何在不同尺寸的屏幕間較好地切換,是界面設計問題,即精簡界面,不是技術問題。

授人以渔,不授人以鱼。
2015-12-23 11:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
试一下分别设置Windows显示的“大”、“中”、“小”情况又如何。
2015-12-23 11:44
快速回复:双管齐下,表单和控件按一定比例放大
数据加载中...
 
   



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

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