Вниз
Скачать: CL | DM;

Как развернуть форму???   Найти похожие ветки 

 
RoLeX   (2003-10-15 20:52) [0]

У меня программа сидит в трее. Надо, чтобы при клике на значок в трее программа разворачивалась. Какой командой развернуть прогу??? Может там как-нить Application.Maximaze;
или как там пишется???


 
DVM ©   (2003-10-15 20:53) [1]

WM_SYSCOMMAND + SC_RESTORE
ShowWindow + SW_SHOW
Короче, смотря как прятали.


 
RoLeX   (2003-10-15 20:55) [2]

А код как именно написать???


 
DVM ©   (2003-10-15 21:02) [3]

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);

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


 
RoLeX   (2003-10-15 21:14) [4]

Спасибо, работает!
У меня воросик остался: Как из Панели задач убрать (скрыть) программу???


 
DVM ©   (2003-10-15 21:19) [5]

Можно с помощью SetWindowLong + GWL_EXTSTYLE (подробнее в справке)
Убрать у окна например стиль WS_EX_APPWINDOW если он есть.


 
RoLeX   (2003-10-15 21:37) [6]

У меня справка на английском. Такчто если можно, напиши полный код!!!


 
RoLeX   (2003-10-16 12:32) [7]

АУ!


 
DVM ©   (2003-10-16 12:37) [8]


> У меня справка на английском.

У меня как ни странно тоже. И в школе я немецкий изучал. Но тем не менее справку я прочитать могу. Учиться и еще раз учиться.

Так можно:

SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

Можно и по-другому.


 
RoLeX   (2003-10-16 12:53) [9]

SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
Всё круто, но когда форму сворачиваешь, над пуском прямоугольник програмы появляется.


 
DVM ©   (2003-10-16 12:58) [10]

Поэкспериментируй со стилями. Таскбар реагирует еще на WS_EX_APPWINDOW. Попробуй его вычесть (or not(WS_EX_APPWINDOW)).
Есть и другие варианты. Можно плюс к тому что ты сделал при сворачивании форму прятать например. Подумай.


 
RoLeX   (2003-10-16 13:15) [11]

С (or not(WS_EX_APPWINDOW)). тоже самое, тока крестик закрытия проги (на этом прямоугольнике) появляется не справа, а слева; и этот прямоугольник ещё и неактивный.
Как его убрать, этот прямоугольник??


 
DVM ©   (2003-10-16 13:19) [12]

Создай для формы обработчик сообщения WM_SYSCOMMAND. Если приходит SC_MINIMIZE то форму пряч. Как создать обработчик сообщения - не спрашивай, есть в любом FAQ.


 
RoLeX   (2003-10-16 15:57) [13]

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited; if (Msg.wParam = SC_MINIMIZE) then
Application.ShowMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);
end;


Вот! Он самый код!
Ещё один вопрос: Как сделать, чтобы форма была поверх всех окон?


 
RoLeX   (2003-10-16 15:58) [14]

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited; if (Msg.wParam = SC_MINIMIZE) then
Application.ShowMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);
end;


Вот! Он самый код!
Ещё один вопрос: Как сделать, чтобы форма была поверх всех окон?


 
RoLeX   (2003-10-16 16:03) [15]

DVM ну гдеже ты! Ответь: Как сделать, чтобы форма была поверх всех окон?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
1-89380
I'm lamer
2003-10-15 18:00
2003.10.27
SynEdit


3-89139
Гость
2003-10-06 13:48
2003.10.27
Ошибка.


3-89165
Rule
2003-10-05 21:41
2003.10.27
Проблемма с извлечением картинки из базы данныз Paradox


14-89490
panov
2003-10-09 17:20
2003.10.27
Создание топиков, обращенных к определенному участнику форума


1-89336
Users
2003-10-16 15:20
2003.10.27
Разделение периода дат на доп-е периоды.




   Наверх