Динамическое отображение и скрытие главного меню применяется не сразу - PullRequest
0 голосов
/ 20 июня 2020
Приложение

My Delphi изначально запускается с показа основной формы, но только с панелью входа пользователя. Я скрываю главное меню, чтобы неавторизованный пользователь не мог получить к нему доступ. После входа пользователя в систему я динамически назначаю меню, задавая Form.Menu := MyMainMenu;.

Однако, когда пользователь входит в систему, и я назначаю главное меню, как упомянуто, оно не сразу видно, пока размер формы не будет изменен каким-либо образом. Сворачивание окна и его повторное отображение также запускает отображение главного меню. Однако мне нужно, чтобы он отображался сразу, когда я его назначаю.

Я попытался добавить следующие попытки сразу после назначения главного меню, но без разницы:

Self.Repaint;
Self.Refresh;
Application.ProcessMessages;

Единственное, что я могу сделать, это немного изменить размер формы во время выполнения , затем он запускает показ. Однако это не только небрежно, но и мое приложение по умолчанию отображается в развернутом состоянии.

Примечание: я использую стили VCL. Без стилей показывает просто отлично. Попытка Vcl-Styles-Utils и его исправлений ничего не меняет.

Как сделать так, чтобы новое назначенное главное меню сразу отображалось без «изменения размера»?


Сбоку обратите внимание, когда я закрываю приложение, у меня возникает утечка памяти: Memory leak from VCL Styles on the Main Menu

Без стилей VCL эта утечка памяти не происходит. Не то чтобы я прошу решения для этого, но дополнительный симптом, который может помочь идентифицировать проблему root.

...