В настоящее время я пытаюсь изменить размеры компонентов в моей форме, но я не могу понять, как это работает. Я пробовал событие OnResize и OnCanResize, но это не изменит мой компонентный heigh или widht.Изменение размеров элементов на formResize в delphi
То, что я делал до сих пор, добавляет фиксированные значения в мое состояние, когда пользователь изменяет размер, но не изменяет размер данного компонента.
Например:
В моей FormResize даже у меня есть что-то подобное:
procedure myform.FormResize(Sender TObject);
var
width: integer;
begin
width := grid.Width +100; //yes it only grows but it doesn't even work
grid.setBounds(grid.Left,grid.Top,width,grid.height);
end;
Это не работает.
Я также попытался direcly изменения с grid.Width := grid.Width +100
, но он не работает либо
Я пытался ставить один и тот же код в CanResize, но тот же вопрос. Я попытался с точками разрыва, если это правильное событие, и если процедура выполняется, когда я изменяю размер и да, это так. Так что, наверное, я что-то пропустил. Моя цель - изменить размер сетки, чтобы сохранить отношение к моей форме, когда пользователь изменит размер/максимизирует форму.
Итак, каков правильный способ изменения размера компонента?
спасибо.
DFM
object BDDTool: TBDDTool
Left = 0
Top = 0
Caption = 'BDD Manager'
ClientHeight = 303
ClientWidth = 680
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
Menu = mMainMenu
OldCreateOrder = False
Position = poScreenCenter
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnResize = FormResize
PixelsPerInch = 96
TextHeight = 13
object pnlFileManager: TPanel
Left = 8
Top = 8
Width = 665
Height = 289
BevelOuter = bvNone
TabOrder = 0
object Label1: TLabel
Left = 156
Top = 263
Width = 86
Height = 13
Caption = 'Primary key color:'
end
object Label2: TLabel
Left = 364
Top = 263
Width = 86
Height = 13
Caption = 'Foreign key color:'
end
object sgFilePreview: TStringGrid
Left = 143
Top = 23
Width = 514
Height = 234
Align = alCustom
ColCount = 1
Enabled = False
FixedCols = 0
RowCount = 2
TabOrder = 0
OnDrawCell = sgFilePreviewDrawCell
OnMouseDown = sgFilePreviewMouseDown
ColWidths = (
64)
RowHeights = (
24
24)
end
object btnConnectToDB: TButton
Left = 0
Top = 32
Width = 137
Height = 25
Caption = 'Connect to DB'
Enabled = False
TabOrder = 1
OnClick = btnConnectToDBClick
end
object btnCreateTabIncK: TButton
Left = 0
Top = 94
Width = 137
Height = 25
Caption = 'Create table (inc keys)'
Enabled = False
TabOrder = 2
OnClick = btnCreateTabIncKClick
end
object btnCreateTabGuidK: TButton
Left = 0
Top = 125
Width = 137
Height = 25
Caption = 'Create table (guid keys)'
Enabled = False
TabOrder = 3
end
object btnAscFk: TButton
Left = 0
Top = 156
Width = 137
Height = 25
Caption = 'Associate foreign keys'
Enabled = False
TabOrder = 4
OnClick = btnAscFkClick
end
object pnlFKColor: TPanel
Left = 456
Top = 263
Width = 81
Height = 18
TabOrder = 5
end
object btnDeconnectDB: TButton
Left = 0
Top = 63
Width = 137
Height = 25
Caption = 'Deconnect from DB'
Enabled = False
TabOrder = 6
OnClick = btnDeconnectDBClick
end
end
object pnlPKColor: TPanel
Left = 256
Sidenote, 'Width' является плохим именем переменной. Хорошо, это полезно для объяснения того, что он делает, но он * конфликтует * с свойством 'Width' формы (на самом деле). То, что правильно * правильно, трудно сказать, не зная макет. Если я получу правильный макет (и как вы хотите изменить размер сетки), я бы назвал * правильным * с помощью якорей. – TLama
Я изменил имя моей переменной, но оно не работает :( – user28470
Если вы хотите изменить размер сетки с помощью формы, установите для свойства 'Anchors'' [akLeft, akTop, akRight, akBottom] '(в наборе IDE все 4 'Anchors' property * subvalues * to True), затем удалите свой код из события OnResize и расслабьтесь ;-) – TLama