Как изменить размер 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
Другие вопросы по тегам