Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Окно, не отбирающее фокус при появлении, как PopupMenu 
:(
    Опции темы
Ne1tr1n0
Дата 7.10.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 2
Всего: 8



Добрый день!

Как сделать, чтобы форма при появлении (а появляется она при клике по другой форме) не перехватывала фокус у предыдущего окна? Хочу сделать подобие PopupMenu, чтоб при его появлении главное окно не теряло фокус.
Пока делаю вот так:
Код

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    Style := Style or WS_BORDER
    ExStyle:=ExStyle or WS_EX_TOPMOST or WS_EX_NOACTIVATE;
    WindowClass.Style := CS_SAVEBITS or CS_DROPSHADOW;
  end;
end;

Но главная форма все равно теряет фокус.
Как быть?

Спасибо.
PM MAIL   Вверх
Keeper89
Дата 7.10.2011, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58





--------------------
PM MAIL WWW   Вверх
Ne1tr1n0
Дата 7.10.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 2
Всего: 8



PM MAIL   Вверх
Ne1tr1n0
Дата 7.10.2011, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 2
Всего: 8



Ссылочки помогли, спасибо. Сделал так:
Код

procedure TForm1.WmActivate(var Msg: TWMActivate);
begin
  SendMessage(GetWindow(Handle, GW_OWNER), WM_NCACTIVATE, Ord(Msg.Active <> WA_INACTIVE), 0);
  inherited;
  if Msg.Active = WA_INACTIVE then
    Release;
end;


Добавлено через 24 секунды
Вопрос решён.
PM MAIL   Вверх
Ne1tr1n0
Дата 8.10.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 2
Всего: 8



А ни у кого не завалялось рабочей ссылочки на DropDownForm от Msutangpeak? Охота глянуть что оно из себя представляет.

Это сообщение отредактировал(а) Ne1tr1n0 - 8.10.2011, 18:26
PM MAIL   Вверх
Antony41
Дата 1.3.2012, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



поправь
Код

procedure WmActivate(var Msg: TWMActivate); message WM_SETFOCUS;

и эту строчку
Код

SendMessage(GetWindow(HintForm.Handle, GW_OWNER), WM_SETFOCUS, Ord(Msg.Active <> WA_INACTIVE), 0);

если на форме 1 будет кнопка и вызывать эту процедуру через неё то при появлении формы 2, кнопка потеряет фокус но заголовок окна будет активным. а так всё будет в порядке.)))

Это сообщение отредактировал(а) Antony41 - 1.3.2012, 23:21
PM MAIL   Вверх
Ne1tr1n0
Дата 4.3.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 2
Всего: 8



Резонное замечание, спасибо, поправлю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.