【问题标题】:How do I keep all my forms position the same when moved移动时如何保持所有表单位置相同
【发布时间】:2015-01-08 19:17:05
【问题描述】:

您好,我有一个由多个表单组成的 delphi 应用程序,我希望这样当用户单击打开/显示新表单时,新表单打开时使用从复制的 Form.Left 和 Form.Top以前的表格到新的表格。我尝试为此使用 Sender:TObject,但我只有基本的图形 delphi 和面向对象的知识。对于使用 OnClick 事件从主菜单表单打开数据库表单的示例,我每次都必须手动执行此操作:

MainMenuForm.Hide;
DatabaseForm.Left:=MainMenuForm.Left;
DatabaseForm.Top:=MainMenuForm.Top;
DatabaseForm.Show; 

但是,我有多个表单,每个表单都有多个 OnClick 事件,因此我每次都必须使用不同的表单来执行此操作。我知道这可能听起来令人困惑,但希望有人知道我在说什么,我知道这个问题可能有一个简单的解决方案,谢谢。

【问题讨论】:

  • 你能告诉我怎么做吗,因为这实际上是最好的解决方案,因为我所有的表单顶部都包含一个工具栏,带有用于打开和关闭表单的菜单按钮
  • 好的,我明白你的意思了,所以在创建表单时,例如:NewForm = class(DefaultTForm)
  • 你可以这样做,但它可能是矫枉过正。看我的回答。

标签: forms delphi


【解决方案1】:

可能最简单的方法是把它放在一个接受两种形式的过程中:

procedure ShowHideForm(OldForm, NewForm: TForm);
begin
  OldForm.Hide;
  NewForm.Left := OldForm.Left;
  NewForm.Top := OldForm.Top;
  NewForm.Show;
end;

【讨论】:

  • 如何在 OnClick 事件过程中调用此过程?
  • 是的,可以忽略我最后的评论,这是一个愚蠢的问题。我以为你不能通过表单,因为你不知道它们是什么类型,每个表单都有不同的类型等等,但我不知道你可以只使用父类 TForm。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
相关资源
最近更新 更多