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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перехват нажатия на кнопку закрытия приложения 
:(
    Опции темы
gonzales
Дата 15.1.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Объясните, почему!!!!!

Использую след. код

Код

protected 
      Procedure WMGetSysCommand(var Message : TMessage); message WM_SYSCOMMAND; 
    end; 

   Procedure TMain.WMGetSysCommand(var Message : TMessage) ; 
   Begin 
        IF (Message..wParam = SC_CLOSE)   
        Then Main.Visible:=False 
        Else Inherited; 
   End; 



и программа занимает в памяти 9 метров!!!!!!!!!!
Убираю этот код - все нормально, не более 1 мб.

Как сделать тоже самое, но чтобы память так не расходовалась.


--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
_hunter
Дата 15.1.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



OnCloseQuery/OnCanclose перекрой...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
gonzales
Дата 15.1.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как мне его перекрыть, если приложение должно закрываться по выбору из меню, а перекрывая OnCloseQuery оно вообще не закрываетсяsmile
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Sunvas
Дата 15.1.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 28
Всего: 89



Цитата(gonzales @  15.1.2007,  13:30 Найти цитируемый пост)
 а перекрывая OnCloseQuery оно вообще не закрывается

Ставишь там
canclose:=true;
 smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
gonzales
Дата 15.1.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ну а тогда в чем суть - тогда есссесно закрывается, или я что-то не понимаю
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Sunvas
Дата 15.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 28
Всего: 89



Цитата(gonzales @  15.1.2007,  16:53 Найти цитируемый пост)
ну а тогда в чем суть - тогда есссесно закрывается, или я что-то не понимаю

а canclose:=false - не закрывается. Да. Видимо че-то не понимаешь.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
gonzales
Дата 15.1.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



может я некорректно выражаюсь, мне нужно сделать так, чтобы при нажатии на "крестик" программа сворачивалась в трей, и при выборе пункта меню "Exit" - она закрывалась

если я ставлю canclose:=false, то программа не закрывается вообще, если наоборот, то закрывается при нажатии на "крестик" 

Цитата

Да. Видимо че-то не понимаешь.


может примерчик приведете, как сделать

заранее благодарю



Это сообщение отредактировал(а) gonzales - 15.1.2007, 17:58
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Sunvas
Дата 15.1.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 28
Всего: 89



Цитата(gonzales @  15.1.2007,  17:55 Найти цитируемый пост)
может я некорректно выражаюсь, мне нужно сделать так, чтобы при нажатии на "крестик" программа сворачивалась в трей, и при выборе пункта меню "Exit" - она закрывалась

если я ставлю canclose:=false, то программа не закрывается вообще, если наоборот, то закрывается при нажатии на "крестик" 

Так это же просто. 
Заводишь глобальную переменную. В Онкреате формы присваиваешь ей значение fasle, а в onclosequery пишишь что-то типа
Код

if can then cancalose:=true else //процедура сворачивания в трей

А по щелчку по Экзит пишешь
Код

can:=true;
close



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
MetalFan
Дата 15.1.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



в Form.OnClose
Action выставляешь в зависимости от того, что тебе надо сделать. выйти - caFree, спрятать - caHide
выставляеяшь глобальный флаг при нажатии на пункт меню и вызываешь Close у формы.
я понятно объясняю?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
CatATonik
Дата 15.1.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 12.1.2007
Где: Москва

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



В CanClose:

Код

  CanClose := False;
  Visible := False;


В обработчик меню Exit:
Код

  Application.Terminate;




Это сообщение отредактировал(а) CatATonik - 15.1.2007, 18:10
PM MAIL   Вверх
Sunvas
Дата 15.1.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 28
Всего: 89



Цитата(CatATonik @  15.1.2007,  18:09 Найти цитируемый пост)
Application.Terminate;

Это неправильно! Нужно закрывать приложение, а не критически его завершать.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
gonzales
Дата 16.1.2007, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Так это же просто. 
Заводишь глобальную переменную. В Онкреате формы присваиваешь ей значение fasle, а в onclosequery пишишь что-то типа


спс, действительно, как обычно все просто

закрываю тему
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
CatATonik
Дата 16.1.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 12.1.2007
Где: Москва

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



Цитата(Sunvas @  15.1.2007,  18:35 Найти цитируемый пост)
Это неправильно! Нужно закрывать приложение, а не критически его завершать. 


Application.Terminate не вызывает критического завершения, по сути просто шлет WM_QUIT приложению.

PM MAIL   Вверх
Sunvas
Дата 16.1.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 28
Всего: 89



Цитата(CatATonik @  16.1.2007,  11:30 Найти цитируемый пост)
Application.Terminate не вызывает критического завершения, по сути просто шлет WM_QUIT приложению.

И что это меняет? Все равно выходит без единого "писка". А допустим, если при выходе надо данные какие сохранить?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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