Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма не ресайзится / 6 сообщений из 6, страница 1 из 1
30.06.2021, 11:55
    #40080884
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
Дано: форма с AutoSize = True и три панели с Align = alTop, alClient, alBottom.
Вопрос: почему при скрытии средней панели с Align = alClient размеры формы не меняются (не ужимается по высоте)?
Это баг или как сделать чтобы форма ресайзилась по размерам видимых панелей?
Delphi 10.4.2, Win10 21H1
...
Рейтинг: 0 / 0
30.06.2021, 11:57
    #40080885
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
Проект в прицепе
...
Рейтинг: 0 / 0
30.06.2021, 11:59
    #40080887
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
LiYing
Вопрос: почему при скрытии средней панели с Align = alClient размеры формы не меняются (не ужимается по высоте)?
потому что RTFM!
...
Рейтинг: 0 / 0
30.06.2021, 13:31
    #40080918
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
LiYing
Вопрос: почему при скрытии средней панели с Align = alClient размеры формы не меняются (не ужимается по высоте)?
А должна?
LiYing
как сделать чтобы форма ресайзилась по размерам видимых панелей?
Писать код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function GetPanelHeight(APanel: TPanel): Integer;
begin
  if APanel.Visible then
    Result := APanel.Height
else
  Result := 0;
end;

Self.Height :=
  GetPanelHeight(pnlTop) +
  GetPanelHeight(pnlClient) +
  GetPanelHeight(pnlBottom);
...
Рейтинг: 0 / 0
30.06.2021, 13:39
    #40080923
LiYing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
_Vasilisk_
А должна?

А почему нет?
F1 Vcl.Forms.TForm.AutoSize:
Specifies whether the control sizes itself automatically to accommodate its contents.
Use AutoSize to specify whether the control sizes itself automatically. When AutoSize is True, the control resizes automatically when its contents change.

Так понимаю, что если средняя панель невидима, т.е. выпадает из содержимого формы, то освободившееся от нее место должно "ужаться". Однако, этому, видимо, мешает нижняя панель.
...
Рейтинг: 0 / 0
30.06.2021, 16:23
    #40080982
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не ресайзится
LiYing,

Все эти аутосайз на контейнерах работают через одно место.
Иногда помогает сделать
Код: pascal
1.
2.
AutoSize := False;
AutoSize := True;


в нужном месте, но не всегда.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма не ресайзится / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]