关于分辨率(100分)

  • 主题发起人 主题发起人 MyCoCo
  • 开始时间 开始时间
M

MyCoCo

Unregistered / Unconfirmed
GUEST, unregistred user!
开发的一个界面,要求能在不同的分辨率下保持正常,并能够自动调整其大小。
请问,窗体里的控件(如label、edit等),如何控制其位置和大小,使之适应不同的分辨率?
 
控件的位置,大小和分辨率没关系.
 
根据当前的分辨率 编码调整
不过最好还是根据你的程序调整系统的分辨率,当你程序启动时
将系统分辨率调整为你需要
 
Windows提供给我们两个API函数,可以动态调整显示器的分辨率, 他们是EnumDisplaySettings()
和 ChangeDisplaySettings(), 下面这个例子就是了
function DynamicResolution(X, Y: word): BOOL;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then
ShowMessage('Now is 640*480');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then
ShowMessage('Now is 800*600');
end;

 
能否提供一个设计思路?
程序要适应分辨率,而不是分辨率适应程序。
 
界面要适应不同分辨率,因为有的客户喜欢在800*600下工作,
而有的客户却喜欢在1024*800下工作
 
多放容器,比如panel,在panel上再放其它控件,将panel的algin设为alclient
 
我现在是一个信息登记界面,其中包含很多控件,如label,DBEdit等,这么多的控件
要随着分辨率的不同,而自动调整其位置和大小,以适应显示区域的变化,保持界面的
匀称和协调。
 
只有手工改代码了。
 
能否提供设计思路,如何改?请教
分数不够,还可以加.
 
就这些,没有了!凑活着用吧!
 
我前几天做了个POS的窗口,由于有些POS机只能640*480,所以我在800*600的设计界面下设计
的界面换到640*480的模式下看看效果。我没有纯碎的技术,只是看看在640*480下面的效果
效果不好的话再自己调整一下。然后在系统运行的时候在FORM.Create事件写一些代码,
if screen.Width=640 then
begin
self.Left:=...
self.Postion:=...
....
end
else
begin
Self.Postion:=poMainFormCenter;
.....
end

以上是我投机取巧,根本没有技术可言,各位见笑了
 
这个问题相信大家都遇到过,但好象到目前为止还没有好的解决办法。
据说一些控件可以实现这一功能,但也不是尽善尽美。
现在大家大都是用程序根据显示分辩率动态调整控件大小(包括字体)和位置的
 
看来也只有动态调整了,不过好象并不复杂。
 
感谢各位的提示,送分,呵呵
 

Similar threads

回复
0
查看
695
万一
S
回复
0
查看
855
SUNSTONE的Delphi笔记
S
S
回复
0
查看
783
SUNSTONE的Delphi笔记
S
后退
顶部