我现在是用scaleby(125,100)来zoom in,用scaleby(75,100)来zonm out主界面,但是我今天发现一个缺点,一伸一缩后界面会变形,而且页面上的文本框会变小,我就这可能是因为scaleby的计算误差收引起的,有没有什么好的办法可以不出现这种情况?
 

解决方案 »

  1.   

    不需要是用 ScaleBy 来处理,改变需要改变的控件的大小就行了。ScaleBy 一般用做处理系统采用不同的字体(大字体和小字体)时处理用的。
      

  2.   

    控件的Anchors属性是控制控件的缩放的,一般默认值是不随窗体改变而改变的。
      

  3.   

    一般情况下,设置Anchors=[akLeft,akTop,akRight,akBottom] 就可以了,这样的话,控件的位置可以自动缩放,如果要控件大小也自动变化,就要编写OnResize事件处理了
      

  4.   

    放在上面地 控件 尽可能地 利用align 进行定位了 
    或者 设置Anchors 进行控件缩放
      

  5.   

    我试了Anchors,不行,图形变形的更加厉害了。我的界面上都是一些动态生成的控件,有继承自TgraphicControl,还有Tmemo作为文本输入的。不知道还有没什么好的办法?如果在编写OnResize事件的话,思路又是如何的?
      

  6.   

    不明白你为什么要缩放界面,除非你的程序需要照顾视力不好者。
    在通常情况下,只有多行控件(List,Tree,Memo或者图片框等)需要进行y轴上的大小调整(注意,这也不能叫缩放),界面的字体一般是不会随着窗体的大小变化而变化的。
    对于大多数的需要,Align和Anchors属性已经可以满足了。
      

  7.   

    电路图跟文本框放在一起???不知道你的电路图是什么格式的。但是就我的经验,电路图一般采用矢量方式绘制。因此可以使用Windows坐标系API来设置缩放。但是这样一来,原来图上的文本也会被缩小或放大。但是这只是对于图片而言。对于界面是不应该有影响的。此外有一个折衷的办法。你使用元文件来缓存电路图,使用Image控件来显示电路图(也就是把元文件尽情的缩放,然后画在Image上,即StretchDraw)。这样一来你的缩放操作就绝对无法影响界面控件了。
      

  8.   

    我的电路图是由许多控件组成的,就象一个变压器就是一个控件,是自定义的,继承自tGeraphicControl的,因为客户的要求是他们点击线路图上的一个设备符号可以查看或者输入这个设备的一些基本参数。因为找不到可以作为文本输入的控件,所以我用了TMemo来充当这个角色,而且他们还要在图上画表格之类的,感觉就象是autovcad。其实这整个界面也就是一个文件,也不能说是一个图片了,所以如果用image的话可能不行,因为我一开始的思路就想用image来做的,到后来才改掉的。看来这个问题是个难题了, 我问了一些朋友,也试了一些方法,但是效果都不好,是不是真的没有什么办法了?但是这好象不可能的delphi功能这么强大,总不至于连这么个小问题都解决不了吧???????????不知道有没有人知道李维老师或宝兰公司技术支持的联系方法,我想问问他们。
      

  9.   

    首先一点,使用Delphi控件系统当作电路图元件并不是一个好主意。电路图往往有几百个以上的元件组成。使用如此数量的Delphi控件会严重降低效率。一般来说,电路图往往采用非可视的数据结构(自定义类)和一个可视的显示控件组成。当然所有的操作都必须有你自己实现。但是随着时间的推移和系统的扩展,你会发现这其实是最好的,有时甚至是不可避免的方法。CAD并不是什么简单的小问题,就算是李维恐怕也无法给你什么能够一步登天的方案。你现在的方法看起来简单,但其实却是弯路(当然,也许你只是为了压缩制作成本)。
      

  10.   

    To:cybercake   请问一下,你所说的非可视的数据结构是什么意思?   我这样做其实也不是为了压缩制作成本,因为这个项目是我一个人做的,而且公司里其他的同事都不懂这个,所以这思路我是我自己想出来的,我当时没有考虑到这一点,现在已经到了后期了,下个星期五就要演示了,不知道还来不来的及改?
      

  11.   

    说白了也就是使用自己编写的可视控件来显示和编辑你的电路数据。所谓非可视的数据结构就是说你自己定义一些类来储存你的电路图信息,比如节点,支路什么的。现在修改已经有点晚了,你只有一个星期的时间。一个折衷的办法是,你可以不使用Form的Scale方法,而是缩放每一个小的元件(通过一个循环,修改Width和Height值。当然这也有可能导致你电路控件代码的变动)。而且也不要使用Scale方法,这种方法会同时修改Window的缩放比例,从而影响你的字体大小和美观。