Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2019, 21:05   #1
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию Заблокировать "крестик" закрытия программы

Вот и весь вопрос. Пробовал написать свой обработчик Form1 OnClose, но все равно прога закрывается. Is it possible?
digitalis вне форума Ответить с цитированием
Старый 08.07.2019, 21:09   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

OnCloseQuery
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.07.2019, 21:10   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TForm27.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 08.07.2019, 22:04   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Спасибо. Работает. Даже если свернуть и правой кнопкой в выпадающем меню ЗАКРЫТЬ - неубиваемо!
Сначала попробовал - что за черт - не работает. Потом включил бошку: у меня же ехе-шник утренний, новый не создается! Ну как же ему создасться, если он в Автозагрузке прописан и сейчас торчит в трее! Убрал, скомпилил - песня!

Последний раз редактировалось digitalis; 08.07.2019 в 22:08.
digitalis вне форума Ответить с цитированием
Старый 08.07.2019, 22:15   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Комп будешь выключать - придется диспетчером убивать. Если убьешь ) Лови WM_QUERYENDSESSION

ЗЫ, нашел тему )

https://programmersforum.ru/showthre...ueryEndSession
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.07.2019 в 22:23.
Аватар вне форума Ответить с цитированием
Старый 08.07.2019, 22:26   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Нет, с этим все в порядке. Это я сделал прожку для борьбы с ленью. Утром до времени, указанного в настроечном файле, прога вырубает принудительно комп, не давая заниматься фигней, а взять в руки метлу-тряпку и наводить в помещении икебану а ля Версаль. Если Т > Т0, она желает успеха и разрешает работать, и я ее сворачиваю в трей кнопкой - (забыл, как это программно делается, ну и фигсим). Бонусом - дополнительная кнопка ВЫКЛЮЧИТЬ КОМП, так что все время работы на компе прога тихо сидит и никому не мешает, и убирать ее ни к чему. А когда надо выключить, я разворачиваю форму и тискаю эту кнопку, как будто кратковременно тиснул кнопку включения - какая разница ?

Последний раз редактировалось digitalis; 08.07.2019 в 22:46.
digitalis вне форума Ответить с цитированием
Старый 09.07.2019, 02:36   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Нет, с этим все в порядке.
Честно говоря ничего не понятно, но если вас устраивает, то и нам волноваться не след.
northener вне форума Ответить с цитированием
Старый 09.07.2019, 13:05   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Что тут непонятного?
Включаю комп, если системное время < заданного в настройке, комп shootdown-ится. Если больше - сворачиваю форму и работаю. Закончить работу - развернул форму и нажал кнопку. 2 в одном: работа по расписанию и кнопка выключения.

Код:
var
  Form1: TForm1;
  TTim,DT: double ;
  H,M,T,H0,M0,T0: integer ;
  F1 : Text ;

  stro: string ;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 AssignFile (F1,'Data.txt') ; // ! ! ! !
   {$I-}
   Reset (F1) ;
   {$I+}
 Readln (F1,stro) ;
 CloseFile (F1) ;
 H0 := StrToInt (Copy(stro,1,2)) ;
 M0 := StrToInt (Copy(stro,4,2)) ;
 T0 := H0 * 60 + M0 ;
 TTim := GetTime ; DT := TTim * 24 ;
 H := Trunc (DT) ;
 M := Trunc((DT-H)* 60) ;
 T := H * 60 + M ;
 if (T<60) or (T>T0) then
   begin
      Label1.Font.Color := clNavy ;
      Label1.Caption := Format ('Удачной работы! %3d',[T-T0])
    end
 else
   begin
      Label1.Font.Color := clRed ;
      Label1.Caption := 'Отключаюсь ! ' ;
      ShellExecute(handle, nil,'shutdown','-f -s -t 0','', SW_SHOWNORMAL) ;
    end ;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShellExecute(handle, nil,'shutdown','-f -s -t 0','', SW_SHOWNORMAL) ;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
end;

end.
PS А через диспетчер в случае чего - убивается нормально.
Изображения
Тип файла: jpg Gasi.JPG (10.1 Кб, 87 просмотров)

Последний раз редактировалось digitalis; 09.07.2019 в 13:08.
digitalis вне форума Ответить с цитированием
Старый 13.07.2019, 01:55   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Заблокировать "крестик" закрытия программы
Form1.BorderIcons := [];
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 13.07.2019, 12:40   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Не годится - убираются все 3 кнопки, а мне нужно было убрать только крестик. Вопрос решен.
Сейчас другой дурью мучаюсь: памяти у меня вагон, но сделать бы .exe в безотладочном варианте, компактно. Просто из интересу. Галку Debug information в настройках снял - не помогло, размер не уменьшился.

Последний раз редактировалось digitalis; 13.07.2019 в 14:14.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Крестик закрытия программы skanku C++ Builder 1 26.05.2012 08:12
Деактивировать "Крестик" в GetOpenFile Klim Bassenger Microsoft Office Excel 6 30.04.2009 11:20