在其他机子上运行后,控件位置发生变动的问题,高手请指教!

wintergoes 2004-03-31 08:12:30
我在自己机子上编写的程序,放到别人的机子上以后,窗体变的很粗糙了,而且控件的大小都变大了,位置也变了,这是怎么回事啊,如何解决呢?请高手指教!
...全文
71 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
efeng0973 2004-04-02
  • 打赏
  • 举报
回复
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);
//在delphi5+windows2000上通过。
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;
efeng0973 2004-04-02
  • 打赏
  • 举报
回复
假设你在800*600的分辨率下设计的form,第一步:
inplementation
const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end;

下一步,要让每个子控制的字体改变到合适的大小:
type
TFooClass = class(TControl); { needed to get at protected }
{ font property }

var
i: integer;
begin
for i := ControlCount - 1 downto 0 do
TFooClass(Controls[i]).Font.Size :=
(NewFormWidth div OldFormWidth) *
TFooClass(Controls[i]).Font.Size;
end;

hhzh426 2004-04-01
  • 打赏
  • 举报
回复
分辨率不会改变窗体中控件的位置,应该是其他机器上设置了不同大小的字体(比如使用了大字体),就程序本身调整比较麻烦,还是运行时检测一下客户机的设置,然后提醒一下用户更改比较好!
wintergoes 2004-04-01
  • 打赏
  • 举报
回复
有人帮帮忙吗?
wintergoes 2004-03-31
  • 打赏
  • 举报
回复
能不能就第2种方法举个例子啊.谢谢大哥了
egg0817 2004-03-31
  • 打赏
  • 举报
回复
对方机器显示器的分辨率和你的不一样 就可能出现问题

我遇到过的,2种方法供参考

1.强行设置对方机器显示器的分辨率和你的一样
2.编写代码调整
内容概要:本文针对基于输入并联输出串联(IPOS)结构的双三相LLC谐振变换器,系统研究其在宽增益工况下的谐振参数优化方法与启动过程中冲击电流的抑制策略。通过Simulink平台构建系统仿真模型,结合变频控制与电压电流双闭环调控策略,深入分析变换器在全范围软开关条件下的工作边界、模式切换动态响应及多模式运行稳定性。研究提出优化谐振腔参数设计以扩展电压增益范围,并引入降频软启动、星形耦合自均流等机制有效抑制上电瞬间的电流冲击,提升系统启动可靠性与运行效率。同时探讨了变频调压、多模式切换控制及交错并联带来的均流优势,为高增益、大功率密度DC-DC变换器的设计提供了完整的建模、控制与优化解决方案; 适合人群:具备电力电子与电力系统基础知识,从事新能源变换器、高频开关电源、电动汽车充电系统、航空航天电源等相关领域研究的研究生、科研人员及工程技术人员; 使用场景及目标:①为高电压增益、高效率、高功率密度DC-DC变换器的谐振参数设计与控制策略制定提供理论依据与仿真验证手段;②指导LLC谐振变换器在新能源并网、车载充电机、直流微网等应用场景中的工程实现与性能优化;③支撑高水平学术论文(如IEEE期刊)的复现、科研项目关键技术攻关及系统级仿真平台搭建; 阅读建议:建议结合Simulink仿真实例,细致理解谐振参数设计准则、软开关实现条件、冲击电流形成机理及其抑制方法的有效性验证过程,重点关注模式切换过程中的动态响应特性与闭环控制参数整定规律,宜配合相关文献进行对比分析以深化对系统稳定性和控制策略优越性的认知。
内容概要:本文详细介绍了使用CAXA3D软件进行支座类零件三维建模的全过程,采用“草图拉伸构建基体→添加凸台→加强筋→切除凹槽与安装孔”的建模思路。通过分步操作讲解,涵盖从创建底座草图、拉伸成实体、添加长方体凸台、使用加强肋图素增强结构强度,到利用孔类图素完成顶部矩形凹槽和中部弧形槽口的切除,最后通过布尔合并形成完整零件。文中还列出了关键尺寸参数,并针对常见建模问题提供了具体解决方案,如长圆孔未切除、加强肋无法生成、孔类图素不减料及零件未合并等问题的原因分析与处理方法。; 适合人群:具备基本三维建模基础,从事机械设计、产品结构设计等相关工作的工程师或工科专业学生;尤其适合正在学习CAXA3D软件操作的初学者; 使用场景及目标:①掌握CAXA3D中基于草图拉伸与图素库组合的高效建模流程;②理解加强肋、孔类图素等智能图素的正确使用方式;③学会解决建模过程中常见的草图封闭性、实体吸附与布尔运算问题;④为后续工程图出图和实际零件设计打下基础; 阅读建议:建议读者结合CAXA3D软件同步实操,按照文档步骤逐步练习,重点关注草图封闭性、图素吸附机制和最终布尔合并的操作细节,以提升建模成功率与效率。

5,944

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧