Показать вторую форму, а заголовок первой оставить активным
procedure TForm2.FormActivate(Sender: TObject);
begin
SendMessage(Application.MainForm.Handle, WM_NCACTIVATE, Boolean(True), 0);
end;
Here is the translation of the text into Russian:
Процедура FormActivate используется для обработки активации формы в приложении Delphi.
В этом коде, когда форма активируется, она отправляет сообщение Windows WM_НCACTIVATE своей основной форме, указывая, что состояние активности изменилось и новая активная форма - та, которая была previously неактивна.
Чтобы достичь требуемого результата, код можно модифицировать следующим образом:
procedure TForm1.FormActivate(Sender: TObject);
begin
Caption := 'Активна'; // Изменить заголовок формы Form1
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
SendMessage(Application.MainForm.Handle, WM_НCACTIVATE, MakeLParam(0, TRUE), 0);
end;
В этом коде, когда форма Form1 активируется, ее заголовок будет изменен на 'Активна'. Когда форма Form2 активируется, она отправит сообщение WM_НCACTIVATE своей основной форме, указывая, что состояние активности изменилось и новая активная форма - та, которая была previously неактивна. Второй параметр функции MakeLParam(0, TRUE) представляет собой состояние активности, которое установлено в значение TRUE.
Обратите внимание: вам нужно импортировать сообщения Windows на верхушке вашего модуля:
uses
WinAPI.Windows;
И определить функцию MakeLParam:
function MakeLParam(lLoord, lHiword: Longint): Longint;
begin
Result := (lLoord and $FFFF) or ((lHiword and $FFFF0000) shr 16);
end;
Процедура TForm2.FormActivate(sender: tobject) изменяет видимость активной формы ActiveForm на True при ее激ativации.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS