我在一个框架中有一个单行GridPanel,其中充满了按钮,当高度或宽度发生变化时,我不想按比例缩放。
在发布之前,我将alClient的对齐设置为使用父对象的完整大小,但我不知道如何进行缩放。你有什么建议?
fwzugrvs1#
在GridPanel中,你有一个ColumCollection,其中有四个(根据你的图片)TColumnItems。对于每个TColumnItem,将SizeStyle属性设置为ssPercent(默认值),并将Value属性设置为25.因为当您编辑一栏时,其他栏的大小会自动调整,所以当您将表单(或框架)检视变更为文字时,编辑这些值会比较容易。在框架上按一下鼠标器右击,然后选取View as Text。编辑后,其外观如下所示。
GridPanel
ColumCollection
TColumnItems
TColumnItem
SizeStyle
ssPercent
Value
View as Text
object GridPanel1: TGridPanel Left = 0 Top = 0 Width = 426 Height = 108 Align = alClient Caption = 'GridPanel1' ColumnCollection = < item Value = 25.000000000000000000 end item Value = 25.000000000000000000 end item Value = 25.000000000000000000 end item Value = 25.000000000000000000 end> ControlCollection = < ... > RowCollection = < item Value = 100.000000000000000000 end> TabOrder = 0 object Button1: TButton Left = 1 Top = 1 Width = 106 Height = 106 Align = alClient Caption = 'Button1' TabOrder = 0 ExplicitLeft = 40 ExplicitTop = 32 ExplicitWidth = 75 ExplicitHeight = 25 end ...other buttons ExplicitWidth = 320 ExplicitHeight = 153 end
您的回应:这是我忘了提到我已经做过的事情。为了澄清,我的问题与在调整框架(或可能是周围的表单)大小时强制一定的高宽比(在我的例子中为1:1)有关。我假设比例1:1适用于每个按钮,所以4:1适用于整个帧。因为用户可以调整窗体的高度或宽度(或两者),而我们只有一个公共的OnResize事件可以依靠,所以我建议如下:声明两个私有变量,形式为
OnResize
OldCW, OldCH: integer; // for client width and client height respectively
和OnResize事件,其形式为:
procedure TForm4.FormResize(Sender: TObject); begin if ClientWidth <> OldCW then ClientHeight := ClientWidth div 4 else ClientWidth := ClientHeight * 4; OldCW := ClientWidth; OldCH := ClientHeight; end;
最后,对于您将来的问题:请说明您已经尝试过哪些方法来解决问题,以及这些尝试失败的原因。
1条答案
按热度按时间fwzugrvs1#
在
GridPanel
中,你有一个ColumCollection
,其中有四个(根据你的图片)TColumnItems
。对于每个
TColumnItem
,将SizeStyle
属性设置为ssPercent
(默认值),并将Value
属性设置为25.因为当您编辑一栏时,其他栏的大小会自动调整,所以当您将表单(或框架)检视变更为文字时,编辑这些值会比较容易。在框架上按一下鼠标器右击,然后选取
View as Text
。编辑后,其外观如下所示。
您的回应:
这是我忘了提到我已经做过的事情。为了澄清,我的问题与在调整框架(或可能是周围的表单)大小时强制一定的高宽比(在我的例子中为1:1)有关。
我假设比例1:1适用于每个按钮,所以4:1适用于整个帧。
因为用户可以调整窗体的高度或宽度(或两者),而我们只有一个公共的
OnResize
事件可以依靠,所以我建议如下:声明两个私有变量,形式为
和
OnResize
事件,其形式为:最后,对于您将来的问题:请说明您已经尝试过哪些方法来解决问题,以及这些尝试失败的原因。