如果防止意外移动是您的目标,我看到两种解决方案。
使用 Delphi 的“锁定控制”选项
Edit > Lock Controls
,但这是一个临时解决方案,没有保存,关闭/重新打开时,它将再次被禁用。
将它们全部对齐在面板内
然后将该面板设置为您需要的宽度。但是,这仍然不会阻止您意外移动面板 - 只是编辑控件。即使这样,您仍然可以重新排列对齐的控件 - 如果您不小心将一个控件拖到其邻居的边缘之外。
这是一个示例 DFM 结构:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 340
ClientWidth = 392
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object ScrollBox1: TScrollBox
Left = 24
Top = 8
Width = 329
Height = 281
TabOrder = 0
object Panel1: TPanel
Left = 3
Top = 3
Width = 500
Height = 217
TabOrder = 0
object Edit1: TEdit
Left = 1
Top = 1
Width = 498
Height = 21
Align = alTop
TabOrder = 0
Text = 'Edit1'
ExplicitLeft = 40
ExplicitTop = 48
ExplicitWidth = 121
end
object Edit2: TEdit
Left = 1
Top = 22
Width = 498
Height = 21
Align = alTop
TabOrder = 1
Text = 'Edit2'
ExplicitLeft = 16
ExplicitTop = 56
ExplicitWidth = 121
end
object Edit3: TEdit
Left = 1
Top = 43
Width = 498
Height = 21
Align = alTop
TabOrder = 2
Text = 'Edit3'
ExplicitLeft = 40
ExplicitTop = 96
ExplicitWidth = 121
end
object Edit4: TEdit
Left = 1
Top = 64
Width = 498
Height = 21
Align = alTop
TabOrder = 3
Text = 'Edit4'
ExplicitLeft = 32
ExplicitTop = 128
ExplicitWidth = 121
end
object Edit5: TEdit
Left = 1
Top = 85
Width = 498
Height = 21
Align = alTop
TabOrder = 4
Text = 'Edit5'
ExplicitLeft = 56
ExplicitTop = 160
ExplicitWidth = 121
end
object Edit6: TEdit
Left = 1
Top = 106
Width = 498
Height = 21
Align = alTop
TabOrder = 5
Text = 'Edit6'
ExplicitLeft = 80
ExplicitTop = 192
ExplicitWidth = 121
end
end
end
end
另一方面,这激发了我研究如何LockChildren
在级别上实现布尔属性TControl
,当启用该属性时,它会阻止您移动或调整其子控件的大小。
实际上,我刚刚在 Delphi 中发现了一个带有“锁定控件”选项的明显错误。如果在表单上启用它,然后关闭并重新打开表单,控件将不再锁定。但同时,如果您转到“编辑”菜单,“锁定控件”选项会显示为好像它仍然处于启用状态(即使它不是)。我想我在 Delphi 7 中记得这个错误 waaaaaay,但我仍然在 Delphi 10 Seattle 上看到它。
编辑我发现 QC 报告仍然打开:
http://qc.embarcadero.com/wc/qcmain.aspx?d=82764