如何在不使用alClient对齐的情况下调整TGridPanel内部的TEdit大小

时间:2011-09-06 17:21:44

标签: delphi delphi-2010 delphi-2009

我需要使用以下结构:

TGdPanel内部的TGdPaPanel内的TEdit

换句话说,存在一个TGridPanel并且在其中一个单元格中我需要插入其他TGridPanel。

在这个内部TGridPanel中需要插入两个TLabel和两个TEdits,如下所示:

______________________

| TLabel1 | TLabel 2 |

______________________

| TEdit 1 | TEdit 2 |

______________________

当我调整外部TGridPanel的大小时,内部的一个也会调整大小,因为内部的TGridPanel对齐是设置alClient,当发生这种情况时,我想要调整Label的大小和编辑,如果它们是左右锚定,但它没有当它们在TGridPanel内部并且如果我将此内部组件的对齐设置为alClient时,它们会被扭曲。

我不能用其他方式,因为我在代码中移动非常稳定并且无权更改它。

可以请有人帮助我吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

截图确保这是你想要的......没有代码,只是设计...

enter image description here

enter image description here

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

答案 1 :(得分:1)

使用内部TGridPanel的OnResize事件来调整其子控件的大小。如果您希望它们填充整个区域,请使用内部TGridPanel的ClientWidth / ClientHeight来帮助计算尺寸。