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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2019, 01:59   #21
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от NNK_RTR Посмотреть сообщение
В то же время я откуда-то зная, что Application.Terminate посылает сообщение WM_CLOSE всем формам приложения.
Почему не срабатывает обработчик?
Потому что так написана VCL. Если вам обязательно нужно чтобы срабатывали обработчики OnClose и/или OnCloseQuery не используйте TApplication.Terminate. Вызывайте метод TForm.Close.
Почему сделано так, а не иначе я могу написать простыню текста, но это будет моё имхо.

P.S. Кстати вчера забыл добавить.
Если вам нужно прервать выполнение любой вашей процедуры, то для этого существует процедура Exit.
northener вне форума Ответить с цитированием
Старый 08.12.2019, 17:34   #22
Владимир61125
Новичок
Джуниор
 
Регистрация: 08.12.2019
Сообщений: 3
По умолчанию

Я не программист, но приходится иногда «с книжкой на коленках».
Подскажите пожалуйста как закрыть (завершить) свою программу.
Программа должна показать окно-напоминание и после нажатия на [OK] завершиться. Мне даже форма Form1 не нужна. Достаточно только несколько ShowMessage(' ,
После нажатия на [OK] Form1 становится видимой и приходится завершать её «по крестику». Переделал на Label1.Caption, но это не то, что хотелось.
Сообщений много и в зависимости от текста все они разной длины. Кучу Label1.Caption на форму не хочется. Придется выравнивать их посередине, а это дополнительный гемор**.
Пробую так:

Код:
procedure TForm1.FormCreate(Sender: TObject);
    Form1.Visible := False
    //...
    //...
   if StrToInt(StrInterval) >= StrToInt(ParamStr(1)) then
      begin
         // ShowMessage('После последнего запуска SAP R3 прошло : ' + StrInterval + ' дней!'); //
         Label1.Caption :=  'После последнего запуска SAP R3 прошло ' + StrInterval + ' дней!'; //  
      end;

   exit;
   halt;
  Close;
   Form1.Close;
   Form1.Free;
   Application.Terminate;

end; // procedure TForm1.FormCreate(Sender: TObject);
end.
Всё равно форма становится видимой и (программа) не завершается. Тем кото может помочь напоминаю, что я не программист. Просто пишу маленькие программки для себя используя книжку и Интернет. Заранее всем кто поможет СПАСИБО.

Последний раз редактировалось Владимир61125; 08.12.2019 в 21:49.
Владимир61125 вне форума Ответить с цитированием
Старый 08.12.2019, 21:53   #23
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Если форма все-таки нужна в случае невыполнения условия, то
Код:
program Project1;

uses
  Forms, Messages, SysUtils, Dialogs,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
const
  StrInterval = 5;


begin
  if StrInterval >= StrToInt(ParamStr(1)) then
    ShowMessage('После последнего запуска SAP R3 прошло : ' + IntToStr(StrInterval) + ' дней!')
  else begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
northener вне форума Ответить с цитированием
Старый 08.12.2019, 23:06   #24
Владимир61125
Новичок
Джуниор
 
Регистрация: 08.12.2019
Сообщений: 3
По умолчанию

СПАСИБО. Ранее в коде делаю проверку условий правильности передачи параметров в программу строкой параметров (Project1.exe 20 "C:\SAP\SAP_TXT.txt") туда из *.bat файла cmd командой (date /T >> C:\SAP\SAP_TXT.txt) попадает дата типа "25.11.2019", потом сама программа C:\SAP\SAP_R3.exe запускается. В SAP_TXT.txt у меня все запуски SAP_R3.exe программы в столбик видны и т.д. Не ожидал, что в воскресенье кто-то ответит. Во вторник на работе попробую. В 1990-м году чуть-чуть ознакомительно изучал возможности Turbo Pascal 5.0 для персональных ЭВМ. Вот уж не думал, что после 50 лет придется ещё и Delphi изучать. Но, как говориться: "Век живи - век учись..." Еще раз спасибо за быстрый ответ.
Владимир61125 вне форума Ответить с цитированием
Старый 09.12.2019, 02:07   #25
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Владимир61125 Посмотреть сообщение
Еще раз спасибо за быстрый ответ.
Не за что. Почему бы старпёру со стажем и не помочь старпёру подготовительной группы В 50 лет жизнь старпёра только начинается. А не зря слово старпёр начинается со STAR
northener вне форума Ответить с цитированием
Старый 09.12.2019, 09:37   #26
Владимир61125
Новичок
Джуниор
 
Регистрация: 08.12.2019
Сообщений: 3
По умолчанию

С таким усердием, оптимизмом и помощниками, я к 60-ти из группы STAR могу в SUPER STARпёры перейти!
Владимир61125 вне форума Ответить с цитированием
Старый 10.12.2019, 02:20   #27
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Владимир61125 Посмотреть сообщение
С таким усердием, оптимизмом и помощниками, я к 60-ти из группы STAR могу в SUPER STARпёры перейти!
Велкам!
northener вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть соединение с радио Михаил Юрьевич Общие вопросы Delphi 0 03.04.2009 19:54
Закрыть чужое приложение Михаил Юрьевич Общие вопросы Delphi 3 28.03.2009 21:26
Как изменить своё имя? Манжосов Денис :) О форуме и сайтах клуба 11 22.07.2008 11:16
Своё окно в трее Altera Общие вопросы Delphi 10 02.07.2008 10:17
как закрыть программу? Alar Общие вопросы Delphi 0 29.10.2006 20:22