CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

控件在不同的分辩率下的位置问题,急!谢谢!

楼主87607047()2005-08-31 12:51:41 在 C++ Builder / 基础类 提问

在一个Form上有5个Panel,上面三个Panel设置Align为alTop,第四个为alClient,最下面一个为alBottom,现在的问题是我是在显示器   1024*768下设置的位置大小,在这个情况下,位置是很好的,但现在调整为800*600,这样位置就不对了,主要是部分不能显示了,主要是Panel4(设为alClient)但下面的Panel挡住了,旁边又没有流动条,这如何设置?  
   
  还有就是虽然是1024*738,但把Windows的图标调大后,也会出现这种情况的,请问如何解决?  
   
  谢谢! 问题点数:100、回复次数:12Top

1 楼netsys2(来电!)回复于 2005-08-31 13:10:21 得分 90

论坛FAQ:  
   
    Q   :     为什么程序在不同的机器上运行时,窗口上的控件的位置和大小会不同?  
  主要解答者:   kingcaiyao   提交人:   ytjoh  
  感谢:    
  审核者:   jishiping   社区对应贴子:   查看  
            A   :  
   
  最近作了一个程序是在2000下完成的不知为何到了98下却完全走样了。按钮等      
  控件比原来都大了好多。这是为何?有人建议我在98下再编译一次,除了这个      
  建议是否有其他好的办法      
  ---------------------------------------------------------------      
     
  设置你所有窗体的Scaled属性为false;      
  动态进行调整窗口的大小,用函数ScaleByTop

2 楼constantine(飘遥的安吉儿)回复于 2005-08-31 13:25:37 得分 2

同意Top

3 楼FlySkyFree(飞)回复于 2005-08-31 14:06:03 得分 2

能否说的详细点?Top

4 楼87607047()回复于 2005-08-31 14:17:37 得分 0

不对呀,我使用的是MDI窗口,在用ScaleBy还是不对呀,虽然Panel4大部分控件是可以显示出来了,但Panel4(设为alClient)还是但下面的Panel挡住了,旁边又没有流动条,这如何设置?  
   
  Panel从上到下分别为Panel1,Panel2,Panel3,Panel4,Panel5Top

5 楼87607047()回复于 2005-08-31 14:21:14 得分 0

就是一个界面就5个Panel,每个Panel上有几个Edit,Label,ComboBox,Button,还有一个StatusBar  
   
  Top

6 楼netsys2(来电!)回复于 2005-08-31 14:58:06 得分 0

把你的主窗口等都按FAQ说的设置。Top

7 楼87607047()回复于 2005-08-31 15:00:47 得分 0

我在主窗口也已经这样设置了!  
   
  const   ScreenHeight=1024;  
  const   ScreenWidth=768;  
  int   intX,intY;  
  mainform->Scaled=true;  
  intX=GetSystemMetrics(SM_CXSCREEN);  
  intY=GetSystemMetrics(SM_CYSCREEN);  
  if((intX!=ScreenHeight)|(intY!=ScreenWidth))  
  {  
    //调用过程ScaleBy,并按intX/ScreenHeight的比例来放缩窗体上的控件和字体  
    ScaleBy(intX,ScreenHeight);  
  }  
   
  问题还是这样呀!Top

8 楼netsys2(来电!)回复于 2005-08-31 16:54:25 得分 0

把你的工程发给我看看。  
   
  mike888@tom.comTop

9 楼liu_jun_ivan(狼近西坡)回复于 2005-08-31 17:40:27 得分 5

如果是动态改变分辨率造成的,则唯有处理窗口的OnResize事件才是最完美的做法;如果不是的话,最好OnCreate时取Screen->Width和Screen->Height,根据这些数据来动态计算并布局,才是最完美的。其实也不麻烦,能处理常见的几种分辨率就可以了。Top

10 楼hehe169(hehe)回复于 2005-08-31 20:55:07 得分 1

同意!  
  其实根据不同分辨率进行动态计算是最好的,程序退出时再恢复即可Top

11 楼netsys2(来电!)回复于 2005-09-01 10:09:12 得分 0

你的工程看了,不再需要多的改动。  
   
  虽然在运行时修改屏幕设置会使你的子窗口界面中有些东西没有显示,  
   
  但关闭它,再重新显示子窗口,又恢复正常。  
   
  实际工作时没有人会在运行时去更改屏幕设置!  
   
  你需要做的工作是重新把子窗口排版,让它更紧凑些。  
   
  ---------------------  
   
  你最大的问题:  
   
  你的MIDI子窗口在800*600本来就显示不完整!  
   
  你自己把屏幕调整为800*600看看,全屏幕显示很多栏目都显示不完,运行时更  
  不可能显示完。  
   
  重新排版吧!Top

12 楼87607047()回复于 2005-09-01 12:03:07 得分 0

是的,我看在1024*768下能完全显示出来,以为到800*600下能自动调整过来,这下我清楚了!谢谢!Top

相关问题

  • Panel 控件位置??
  • jbuilderx 控件位置
  • 如何设窗口的初始显示位置(要与分辩率无关)?
  • 急::怎么样在运行时移动控件位置。。。
  • 控件的位置控制怎么做?分数多,急
  • 急!在不用系统中控件的位置会有差异??!!!!
  • 急寻控件
  • 急!关于浏览器分辩率的问题.在线等待答案。
  • 控件位置问题??
  • 控件位置调整

关键词

  • 控件
  • 屏幕
  • panel
  • scaleby
  • intx
  • 谢谢
  • screenheight
  • 设置
  • 显示
  • 位置

得分解答快速导航

  • 帖主:87607047
  • netsys2
  • constantine
  • FlySkyFree
  • liu_jun_ivan
  • hehe169

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo