Как изменить размер TEdit внутри TGridPanel без использования выравнивания alClient
Мне нужно работать со следующей структурой:
TEdit внутри TGdridPanel внутри TGridPanel
Другими словами, существует TGridPanel, и в одну из ячеек мне нужно вставить другой TGridPanel.
В этот внутренний TGridPanel необходимо вставить два TLabels и два TEdit, например:
______________________
| TLabel1 | TLabel 2 |
______________________
| TEdit 1 | TEdit 2 |
______________________
Когда я изменяю размер внешнего TGridPanel, внутренний тоже изменяет размер, потому что внутреннее выравнивание TGridPanel настроено alClient, и когда это происходит, я хочу изменить размеры Label и Edit, как если бы они были привязаны слева и справа, но это не когда они находятся внутри TGridPanel, и если я установлю выравнивание этих внутренних компонентов как alClient, они будут искажены.
Я не могу использовать другой способ, потому что я двигаюсь в коде очень стабильно и у меня нет разрешения на его изменение.
Может ли кто-нибудь помочь мне?
Спасибо.
2 ответа
Используйте событие OnResize внутреннего TGridPanel, чтобы изменить размеры дочерних элементов управления, как вам нравится. Используйте внутреннюю TGridPanel ClientWidth/ClientHeight, чтобы помочь рассчитать размеры, если вы хотите, чтобы они заполняли всю область.
Скриншоты, чтобы убедиться, что это то, что вы хотите... без кода, просто дизайн...
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 337
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object grdpnl1: TGridPanel
Left = 0
Top = 0
Width = 635
Height = 337
Align = alClient
Caption = 'grdpnlOutside'
ColumnCollection = <
item
Value = 33.333333333333340000
end
item
Value = 33.333333333333340000
end
item
Value = 33.333333333333340000
end>
ControlCollection = <
item
Column = 0
Control = lbl1
Row = 0
end
item
Column = 1
Control = lbl2
Row = 0
end
item
Column = 2
Control = lbl3
Row = 0
end
item
Column = 0
Control = lbl4
Row = 1
end
item
Column = 1
Control = grdpnlInside
Row = 1
end
item
Column = 2
Control = lbl5
Row = 1
end
item
Column = 0
Control = lbl6
Row = 2
end
item
Column = 1
Control = lbl7
Row = 2
end
item
Column = 2
Control = lbl8
Row = 2
end>
RowCollection = <
item
Value = 33.333333333333340000
end
item
Value = 33.333333333333340000
end
item
Value = 33.333333333333340000
end>
ShowCaption = False
TabOrder = 0
ExplicitLeft = 144
ExplicitTop = 64
ExplicitWidth = 273
ExplicitHeight = 105
object lbl1: TLabel
Left = 1
Top = 1
Width = 211
Height = 111
Align = alClient
Caption = 'lbl1'
ExplicitLeft = 91
ExplicitTop = 50
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl2: TLabel
Left = 212
Top = 1
Width = 211
Height = 111
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl3: TLabel
Left = 423
Top = 1
Width = 211
Height = 111
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl4: TLabel
Left = 1
Top = 112
Width = 211
Height = 111
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object grdpnlInside: TGridPanel
Left = 212
Top = 112
Width = 211
Height = 111
Align = alClient
Caption = 'grdpnlInside'
ColumnCollection = <
item
Value = 50.000000000000000000
end
item
Value = 50.000000000000000000
end>
ControlCollection = <
item
Column = 1
Control = pnlBottomRight
Row = 1
end
item
Column = 0
Control = pnlBottomLeft
Row = 1
end
item
Column = 0
Control = pnlTopLeft
Row = 0
end
item
Column = 1
Control = pnlTopRight
Row = 0
end>
RowCollection = <
item
Value = 50.000000000000000000
end
item
Value = 50.000000000000000000
end>
ShowCaption = False
TabOrder = 0
ExplicitLeft = 312
ExplicitTop = 168
ExplicitWidth = 185
ExplicitHeight = 41
object pnlBottomRight: TPanel
Left = 105
Top = 55
Width = 105
Height = 55
Align = alClient
BevelOuter = bvNone
Caption = 'pnlBottomRight'
ShowCaption = False
TabOrder = 0
ExplicitLeft = 136
ExplicitTop = 72
ExplicitWidth = 185
ExplicitHeight = 41
DesignSize = (
105
55)
object edtRight: TEdit
Left = 0
Top = 17
Width = 105
Height = 21
Alignment = taRightJustify
Anchors = [akLeft, akRight]
TabOrder = 0
Text = 'edtRight'
ExplicitTop = 10
end
end
object pnlBottomLeft: TPanel
Left = 1
Top = 55
Width = 104
Height = 55
Align = alClient
BevelOuter = bvNone
Caption = 'pnlBottomRight'
ShowCaption = False
TabOrder = 1
ExplicitLeft = 136
ExplicitTop = 72
ExplicitWidth = 185
ExplicitHeight = 41
DesignSize = (
104
55)
object edtLeft: TEdit
Left = 0
Top = 17
Width = 105
Height = 21
Anchors = [akLeft, akRight]
TabOrder = 0
Text = 'edtLeft'
end
end
object pnlTopLeft: TPanel
Left = 1
Top = 1
Width = 104
Height = 54
Align = alClient
BevelOuter = bvNone
Caption = 'pnlBottomRight'
ShowCaption = False
TabOrder = 2
ExplicitLeft = 136
ExplicitTop = 72
ExplicitWidth = 185
ExplicitHeight = 41
DesignSize = (
104
54)
object lblLeft: TLabel
Left = 0
Top = 20
Width = 105
Height = 13
Anchors = [akLeft, akRight]
AutoSize = False
Caption = 'lblLeft'
end
end
object pnlTopRight: TPanel
Left = 105
Top = 1
Width = 105
Height = 54
Align = alClient
BevelOuter = bvNone
Caption = 'pnlBottomRight'
ShowCaption = False
TabOrder = 3
ExplicitLeft = 136
ExplicitTop = 72
ExplicitWidth = 185
ExplicitHeight = 41
DesignSize = (
105
54)
object lblRight: TLabel
Left = 0
Top = 20
Width = 105
Height = 13
Alignment = taRightJustify
Anchors = [akLeft, akRight]
AutoSize = False
Caption = 'lblRight'
end
end
end
object lbl5: TLabel
Left = 423
Top = 112
Width = 211
Height = 111
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl6: TLabel
Left = 1
Top = 223
Width = 211
Height = 113
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl7: TLabel
Left = 212
Top = 223
Width = 211
Height = 113
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
object lbl8: TLabel
Left = 423
Top = 223
Width = 211
Height = 113
Align = alClient
Caption = 'lbl1'
ExplicitWidth = 16
ExplicitHeight = 13
end
end
end