www.91084.com

GVKun编程网logo

delphi – 如何使我的表单调整更顺利?(delphi表格)

24

对于想了解delphi–如何使我的表单调整更顺利?的读者,本文将是一篇不可错过的文章,我们将详细介绍delphi表格,并且为您提供关于.Delphi7升级到Delphi2010、DelphiXE、De

对于想了解delphi – 如何使我的表单调整更顺利?的读者,本文将是一篇不可错过的文章,我们将详细介绍delphi表格,并且为您提供关于.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结、Delphi XE4 – 获取当前的表单监视器、delphi – ParentBackground如何在IDE生成的表单上工作?、delphi – 为什么我的表单在文件被删除时不会收到WM_DropFiles?的有价值信息。

本文目录一览:

delphi – 如何使我的表单调整更顺利?(delphi表格)

delphi – 如何使我的表单调整更顺利?(delphi表格)

当使用许多控件调整表单大小时,由于闪烁,表单看起来不好。什么是一些提示,以更平滑的形式调整大小?

解决方法

procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
  Self.disableAlign;
end;

procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
  Self.EnableAlign;
end;

.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结

.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结

总结

以上是小编为你收集整理的.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Delphi XE4 – 获取当前的表单监视器

Delphi XE4 – 获取当前的表单监视器

在多监视器环境中,我希望能够在关闭表单时获取当前监视器和活动监视器以保存信息,并在以后重新打开表单时,表单将显示在最后一个位置它显示了.

当显示表单时,我会进行所有检查(如果监视器编号-i-存在等等),如果一切正常,我会在右侧监视器上显示该表单(i)

Form1.BoundsRect := Screen.Monitors[i].BoundsRect;

我希望能够在Form1.onCloseQuery事件中显示当前监视器显示的表单和活动监视器,这样我就可以在一些Ini,DB中保存该信息,无论如何,但似乎我找不到正确的方法来执行它正常.

有任何想法吗?

解决方法

如果要保存表单的位置,可以在屏幕坐标中执行此操作.在TForm.BoundsRect中保存信息,它为您提供屏幕相对坐标.请注意,屏幕相对坐标包含连接到屏幕的所有监视器.

换句话说,您实际上不需要担心表单所在的监视器.例如,假设您有两台并排的800×600显示器.屏幕坐标为:

>(0,800,800)左手监视器.
>(800,1600,800)用于右侧监视器.

在您第一次显示表单时,检查表单是否在屏幕范围内是明智的.也许当你记得它的位置时,它就在显示器上,后来被移除了.或者用户可能已重新配置其监视器以使之前的屏幕坐标无效.

要回答您提出的问题,请使用表单的Monitor属性查找与表单关联的监视器.这是通过调用Win32 API函数MonitorFromWindow传递MONITOR_DEFAULTTONEAREST来实现的.

delphi – ParentBackground如何在IDE生成的表单上工作?

delphi – ParentBackground如何在IDE生成的表单上工作?

此代码适用于VCL Forms应用程序中的IDE生成表单:

Self.ParentBackground := True;

但为什么?没有任何后代(TForm,TCustomForm,TScrollingWinControl)发布TWinControl的受保护的ParentBackground属性.表单顶部的表单类型声明(f.i.’TForm1′)也没有.确实如预期的那样

TForm(Self).ParentBackground := True;

不编译(“无法访问受保护的符号TWinControl.ParentBackground”).与在运行时创建的任何表单相同.

注意:问题不在于我如何设置属性(BTW,还有其他的,如’Bevel [xxx]’),我想知道这是如何工作的.

解决方法

Self.ParentBackground := True;

编译,因为类可以访问自己的受保护成员.

delphi – 为什么我的表单在文件被删除时不会收到WM_DropFiles?

delphi – 为什么我的表单在文件被删除时不会收到WM_DropFiles?

我正在使用Embarcadero RAD Studio XE来开发应用程序.我正在尝试使用以下代码将文件拖放到应用程序中

TMainForm = class(TForm)
public:
  procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle,True);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle,False);
end;

procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles);
begin
  inherited;
  showmessage('catch here');
  // some code to handle the drop files here
  Msg.Result := 0;
end;

这段代码没有问题.此外,当我拖放文件时,光标显示状态已更改为拖放,但在删除后,没有任何反应(也未显示任何消息).这有什么不对吗?

解决方法

在普通的vanilla应用程序中,问题中的代码会导致在表单上删除对象时执行WMDropFiles.所以,显然还有其他事情可以阻止它发挥作用.最明显的潜在原因是:

>在初始调用DragAcceptFiles之后重新创建主窗体的窗口句柄.
>您的进程运行的完整性级别高于删除其上的文件的进程.例如,您是否以管理员身份运行流程?请注意,以IDE身份运行Delphi IDE会导致您的进程在从IDE启动时以管理员身份运行.
>您的过程中的其他任何东西都在干扰拖放.不知道你的应用程序中有什么,很难猜出这可能是什么.开始删除部分应用,直到除了问题中的代码之外什么都没有留下.

方案2似乎很合理.要了解更多信息,请参阅:Q: Why Doesn’t Drag-and-Drop work when my Application is Running Elevated? – A: Mandatory Integrity Control and UIPI

今天的关于delphi – 如何使我的表单调整更顺利?delphi表格的分享已经结束,谢谢您的关注,如果想了解更多关于.Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结、Delphi XE4 – 获取当前的表单监视器、delphi – ParentBackground如何在IDE生成的表单上工作?、delphi – 为什么我的表单在文件被删除时不会收到WM_DropFiles?的相关知识,请在本站进行查询。

本文标签: