gonzales Опубликовано 17 августа, 2020 Поделиться Опубликовано 17 августа, 2020 Собственно сабж, не могу сообразить. Создаю в рантайме компонент, у которого указываю Width и Height. После чего компоненту присваивается Align:=TAlignLayout.Top; Однако Width не меняется. Каким образом заставить программу пересчитать размеры компонента. Пробовал все что могло повлиять, Resize, RecalcSize, Realign и тд. Ничего не срабатывает((( Цитата Ссылка на комментарий
0 slav_z Опубликовано 17 августа, 2020 Поделиться Опубликовано 17 августа, 2020 Parent назначен? покажите код... Цитата Ссылка на комментарий
0 gonzales Опубликовано 17 августа, 2020 Автор Поделиться Опубликовано 17 августа, 2020 constructor TEssence.CreateCustom(AOwner: TComponent; X: Single; Y: Single; W: Single; H: Single; R: Single; Str_T: Single; Str_C: cardinal; Fill_C: cardinal; FontColor: cardinal; FontSize: Single; Im_size: Single; text: string; El_W:Single; AlignEssence:byte); var Size: TSizeF; NameAni: TFloatAnimation; RectAni: TFloatAnimation; ImAni: TFloatAnimation; begin inherited Create(AOwner); Parent := AOwner as TFmxObject; XRadius := R; YRadius := R; Stroke.Thickness := Str_T; Stroke.Color := Str_C; ..... это конструктор родителя constructor TPult.Create(AOwner: TComponent; X: Single; Y: Single; W: Single; H: Single; Pult_Align:integer; R: Single; Str_T: Single; Str_C: cardinal; Fill_C: cardinal; Font_C: cardinal; FontSize: Single; text: string; image: string; ColCount: byte; RowCount: byte); var i:integer; c:single; begin //inherited CreatePult(AOwner); inherited CreateCustom(AOwner, X, Y, W, H, R, Str_T, Str_C, Fill_C, Font_C, FontSize, 0, text, 0, 0); if Pult_Align = 1 then begin Align:=TAlignLayout.Top; Margins.Top := 5; Margins.Bottom := 5; Margins.Left := 10; Margins.Right := 10; .... а это конструктор наследника. TPult - наследник от TEssence. Соответственно, если в наследнике Pult_Align = 1, наследник прибивается к топу, но его Width не изменяется. Цитата Ссылка на комментарий
0 slav_z Опубликовано 17 августа, 2020 Поделиться Опубликовано 17 августа, 2020 (изменено) повторил ваш код, у меня все работает (delphi 10.3.3): Нужен пример неработающего кода. Попробуйте сделать минимальное приложение со своими классами и выложить сюда. Изменено 17 августа, 2020 пользователем slav_z +картинка Цитата Ссылка на комментарий
0 gonzales Опубликовано 17 августа, 2020 Автор Поделиться Опубликовано 17 августа, 2020 хммм, странно. спасибо, последую вашему совету Цитата Ссылка на комментарий
0 krapotkin Опубликовано 18 августа, 2020 Поделиться Опубликовано 18 августа, 2020 в Create размер обычно еще не известен OnResize больше подходит Цитата Ссылка на комментарий
Вопрос
gonzales
Собственно сабж, не могу сообразить.
Создаю в рантайме компонент, у которого указываю Width и Height. После чего компоненту присваивается Align:=TAlignLayout.Top;
Однако Width не меняется.
Каким образом заставить программу пересчитать размеры компонента.
Пробовал все что могло повлиять, Resize, RecalcSize, Realign и тд. Ничего не срабатывает(((
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.