我使用笔记本电脑制作了一个带有15英寸屏幕笔记本电脑的表格,但是当我将应用程序转移到笔记本时,某些按钮组件不可见,尤其是那些在笔记本电脑中可见的表格以下的按钮组件。 那么是否有代码的可能性,使窗体调整自己以适应笔记本电脑屏幕或如何使用属性可以完成?制作适合笔记本电脑的桌面
回答
您可以阅读Zarko Gajic的文章http://delphi.about.com/od/standards/a/aa030700a.htm以了解缩放中的一些缺陷。
下面是可能帮助功能:
procedure ScaleForm(theF: TForm; ScreenWidth, ScreenHeight: LongInt) ;
begin
theF.Scaled := True;
theF.AutoScroll := False;
if (Screen.Width <> ScreenWidth) then
begin
theF.Height :=LongInt(theF.Height) * LongInt(Screen.Height) div ScreenHeight;
theF.Width := LongInt(theF.Width) * LongInt(Screen.Width) div ScreenWidth;
theF.ScaleBy(Round(Screen.Width,ScreenWidth)) ;
end;
{the following lines work on an Xp PC but seem to have no effect on Win 7
theF.Position := poScreenCenter; //poDefault, poDesigned,poDesktopCenter,poOwnerFromCenter,poMainFormcenter
theF.Font.Name := 'Arial'; //to scale properly, you have to use a scalable font.
}
end;
在电话应用程序的OnCreate处理Scaleform的功能(Form1上,screen.width,screen.height); Form1是您表单的句柄。如果需要,可将函数调用放置在表单上的菜单项或按钮上以手动调用它。
此外,这是一个使用ScaleBy函数的简单过程。 ScaleBy可用于以 为增量向下(或向上)调整表单的大小,直到整个表单适合Netbook。该示例使用10%的增量。根据您在应用程序中使用的控件,这可能是您所需要的。许多控件会自动缩放。有更多优雅和复杂的解决方案。在XE2中有一个叫做ChangeScale的函数 ,它可能是有用的,但它可能在Delphi 7中不可用。请记住,并非所有的控件都能正常缩放。你可能有更多的工作要做。
procedure TPktForm1.ScaleDown1Click(Sender: TObject);
begin
ScaleBy(90,100); //changes this form where ScaleBy(percentage reduction of reduced form, percentage original form);
Form_A.ScaleBy(90,100); //changes other forms in the application
Form_B.ScaleBy(90,100);
Application.ProcessMessages;
end;
,或者你可能会在窗体的OnCreate添加Scaleby(659,Screen.Height),其中 '659' 是编程的原始表格的高度来填充屏幕或Scaleby(Screen.Height,659);使表格变小。是的,这项技术在缩小比例方面可以做到的限制。从桌面到上网本在这里工作得很好。
网上有很多例子。你在使用DBGrid吗?你会遇到问题,但是你可以为他们编写代码。
您可能会以这种方式放大缩小,但缩小?我对此表示怀疑。 – 2013-02-18 20:09:38
是的,要向下缩放,请尝试编辑后的Scaleby(Screen.Height,659)。谢谢你的提示。 – SteveJG 2013-02-18 21:07:21
虽然缩放是一个选项,但我会反对它(尤其是对缩小比例),因为它会影响可用性(控件变得更小,文本更难阅读等等),因此Cosmin +1 – 2013-02-19 09:59:26
你所要求的也叫做resolution independence
,这意味着设计你的窗体使它们可以在非常小的和非常大的屏幕(屏幕分辨率)上使用。
传统上,这是通过使用Anchors
和Align
属性完成的,因此控件可以根据特定的布局来调整自己的大小和位置。
较新的德尔福版本也有Margins
和AlignWithMargins
,以便自动对齐可以保留控件之间的一些空间。
许多其他工具包使用的另一种方法是使用显式布局概念。这可以通过Delphi中的TGridPanel
和TFlowPanel
来完成,但在我的经验中并不是很好。有更好的布局管理系统(如DevExpress Layout Control)。
您也可以考虑使用TScrollBox
es,TSplitter
s和docking
以允许用户自定义他们的UI体验。
您还可以考虑将某些功能放在由按钮调用的额外对话框中或隐藏TPageControl
选项卡上的某些控件。
缩放也是可能的(请参阅Steves答案),但它会使表单看起来很奇怪,并且可能会大大降低用户体验,因为控件太小或用户难以击中正确的控件或字体太小等。
如果努力工作得很好,或者如果您拥有完全不同的设备(如智能手机与工作站),甚至可能需要具有完全不同的表单或可能使用客户端/服务器或多层架构的不同应用程序共享相同的buisiness逻辑,但这实际上超出了这个问题的范围...
+1也值得一提的是'Constraints '。这是一个非常好的视频[教程](http://www.youtube.com/watch?feature=player_embedded&v=FNWcy8S2k4Y) – kobik 2013-02-19 15:25:04
- 1. 使用笔记本电脑在桌面上工作
- 2. Ruby Dir.glob适用于不在桌面上的笔记本电脑吗?
- 3. 笔记本电脑/桌面睡眠事件
- 4. r笔记本电脑绘制线条
- 5. 从java监控笔记本电脑或笔记本电脑电源
- 6. IPython的笔记本电脑连接到外部的笔记本
- 7. Spyder的笔记本电脑的Python 2.7
- 8. 适用于iPhone的最低规格笔记本电脑?
- 9. 适用于笔记本电脑的加速计API
- 10. emacs,它是在笔记本电脑上还是在桌面上运行?
- 11. 平板电脑上的不同视图比笔记本电脑
- 12. 如何控制Windows笔记本电脑或winPad充电
- 13. 使用mediaDevices.getUserMedia在笔记本电脑上
- 14. 笔记本电脑回环问题
- 15. 问题与64位笔记本电脑
- 16. 笔记本电脑开盖效果
- 17. Jupyter笔记本电脑显示代码
- 18. 如何从GitHub Jupyter笔记本电脑
- 19. Google Nearby是否适用于台式机/笔记本电脑?
- 20. 在笔记本电脑和主电脑上同步我的工作?
- 21. PHP脚本适用于笔记本电脑,但不适用于服务器
- 22. flash动作脚本激活笔记本电脑摄像头
- 23. Jupyter笔记本电脑:借鉴笔记本电脑的图形,而不是将文件保存到磁盘
- 24. rpi2和笔记本电脑wardriving(笔测试)的硬件列表
- 25. 卷曲停止在我的笔记本电脑上工作
- 26. Turbo C++ 3.0无法在我的笔记本电脑上工作
- 27. 无法让pythonXY在我的笔记本电脑上工作
- 28. 如何在Google Analytics报告中过滤笔记本电脑/笔记本电脑用户
- 29. 使用笔记本电脑控制MSP430 PWM
- 30. ipython笔记本电脑升级到Ubuntu后停止工作15.04
对不起,我完全错过了delphi标签:P我的坏。对于那个很抱歉。 – Tkingovr 2013-02-18 13:59:47
您需要创建表单的动态/响应式设计。例如使用Align,Anchors,ScrollBoxes作为子控件,以便表单使用任何分辨率进行自我调整。 – kobik 2013-02-18 14:04:13
或者你可以使用布局管理器:http://stackoverflow.com/questions/2372797/delphi-layout-manager-form-builder-opensource – 2013-02-18 14:07:12