Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Заставить мерцать заголовок модального окна при щелчке на родительской форме

Delphi , Программа и Интерфейс , Модальные формы

Заставить мерцать заголовок модального окна при щелчке на родительской форме

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Under windows 2000/XP,if user open a modal dialog, 
  when the user click the modal form's parent form, 
  windows can flash the modal form title bar,how to do it by delphi? 
  you may create base form,let you modal form inherite from the base form, 
  and add under codes to the base form source: 
}

 type
   TFrmBase = class(TForm)
   protected
     procedure CreateParams(var Para: TCreateParams); override;
     {....}
   end;

   {.....}

 implementation

 procedure TFrmBase.CreateParams(var Para: TCreateParams);
 begin
   inherited;
   Para.WndParent := GetActiveWindow;
 end;

Программный код, который вы предоставили, является частью приложения Delphi, которое стремится создать модальное окно и сделать его заголовок блестеть, когда пользователь кликнет на родительское окно (окно, из которого было открыто модальное окно). Это поведение типично под Windows 2000/XP, когда открыт модальный диалог.

Вот объяснение того, что код делает:

  1. Он определяет базовый класс формы TFrmBase, который наследуется от TForm.
  2. В процедуре CreateParams, которая вызывается Delphi для инициализации параметров формы, он устанавливает свойство WndParent формы в активное окно с помощью функции GetActiveWindow.

Однако этот код одинок не сделает заголовок блестеть, когда родительское окно кликнется. Для достижения этого вам нужно использовать другой подход.

Вот альтернативное решение:

  1. Создайте отдельную процедуру, которая возвращает фокус на родительское окно после закрытия модального окна.
  2. В этой процедуре используйте функцию API FlashWindow (доступную под Windows) для блестения заголовка родительского окна.

Вы можете добавить эту процедуру в ваш базовый класс формы следующим образом:

procedure TFrmBase.FlashParentForm;
begin
  FlashWindow(GetParentForm.Handle, 3); // блестеть окно три раза
end;

procedure TFrmBase.FormClose(Sender: TObject; var Action: TAction);
begin
  inherited;
  FlashParentForm;
end;

В этом коде GetParentForm возвращает ссылку на родительское окно, а FlashWindow блестит его заголовок. Третьим аргументом FlashWindow указывается количество раз блестеть окно.

Помните заменить GetParentForm на реальный метод или свойство, которое возвращает ссылку на родительское окно.

Вы можете вызвать эту процедуру в событии OnClose вашего модального окна, чтобы обеспечить блестение заголовка родительского окна при закрытии модального окна.

При открытии модального окна на родительской форме в Delphi можно заставить заголовок модального окна мерцать при щелчке родительской формы, используя метод CreateParams для установки параметров родительского окна.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Модальные формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:36:54/0.00382399559021/0