Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];

Вниз

Автоматическое закрытие программы.   Найти похожие ветки 

 
JohnKorsh   (2013-04-11 14:57) [0]

Добрый день! Не поможет ли кто в простом вопросе? Закрываю программу-рактор - по бездействию пользователя в течении пяти минут. (Таймер, счётчик и Close). В прграмме Memo, MainMenu и строка состояния. Если фокус ввода на Memo, то всё работает. Если пользователь активировал MainMenu, да и ушёл, ничего не выбрав, то всё плохо - за 10 секунд до закрытия краснеет строка состояния - это происходит, но программа не закрыватся. Как закрыть программу в этой ситуации?


 
Jeer ©   (2013-04-11 15:22) [1]

Выключить монитор.


 
JohnKorsh   (2013-04-11 15:32) [2]

Если просто "подсветить" основной пункт меню, то программа закрывается, а, если открыть подменю, то закрытия не происходит. Можно ли программно закрывать открытые подменю?


 
RWolf ©   (2013-04-11 15:46) [3]


> Как закрыть программу в этой ситуации?

Halt(0);


 
O'ShinW ©   (2013-04-11 16:04) [4]

CloseWindow( Menu.WindowsHandle);
Close;


 
JohnKorsh   (2013-04-11 16:36) [5]

Спасибо. Но Halt (0) - работает хорошо, но вообще то не очень, ведь это abnormal termination. Дамп создаётся. А не хотелось бы.


 
Игорь Шевченко ©   (2013-04-11 17:13) [6]


> Halt (0)


> Дамп создаётся


Не создается


 
JohnKorsh   (2013-04-11 17:16) [7]

Да, ошибся, не создаётся.
Извините, а как Handle MainMenu получить?


 
O'ShinW ©   (2013-04-11 17:20) [8]

MainMenu.WindowHandle


 
Германн ©   (2013-04-11 17:22) [9]


> Извините, а как Handle MainMenu получить?

А зачем?


 
JohnKorsh   (2013-04-11 18:04) [10]

чтобы

CloseWindow( Menu.WindowsHandle);
Close;


 
Германн ©   (2013-04-11 18:11) [11]


> чтобы
>
> CloseWindow( Menu.WindowsHandle);
> Close;

Ну попробуй. Только не WindowsHandle, а WindowHandle. Но работает криво.


 
JohnKorsh   (2013-04-11 18:16) [12]

Да, криво. Ещё как криво. У Halt (0) ещё недостаток - не выполняется OnClose. Там у меня всё, что пользователь набрал сохраняется. Спасибо. Подумаю.


 
O'ShinW ©   (2013-04-11 22:33) [13]

а что криво-то?
Засылаем себе PostMessage о выходе, в котром закрываем меню, после закрываем форму. Все штатно.


 
Германн ©   (2013-04-12 01:38) [14]


> O"ShinW ©   (11.04.13 22:33) [13]
>
> а что криво-то?
> Засылаем себе PostMessage о выходе, в котром закрываем меню,
>  после закрываем форму. Все штатно.
>  

А сам пробовал?


 
O'ShinW ©   (2013-04-12 08:17) [15]


> А сам пробовал?

тока что


 
O'ShinW ©   (2013-04-12 08:37) [16]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Menus, ExtCtrls;

type
 TForm1 = class(TForm)
   btn1: TButton;
   Memo1: TMemo;
   MainMenu1: TMainMenu;
   rrr1: TMenuItem;
   rrrr1: TMenuItem;
   tmr1: TTimer;
   procedure btn1Click(Sender: TObject);
   procedure tmr1Timer(Sender: TObject);
 private     { Private declarations }
 public      { Public declarations }
   SSS: string;
   i: Integer;
   procedure OnMsgQuit(var Message: TMessage); message WM_USER + $100;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
 SR: TSearchRec;
 SL: TStringList;
begin
 SSS := "C:\111111\111\";
 SL := TStringList.Create;
 if FindFirst(SSS + "*.sql", faAnyFile, SR) = 0 then
 begin
   repeat
     SL.Clear;
     SL.LoadFromFile(SSS + SR.Name);
     Memo1.Text := Memo1.Text + SL.Text;
   until FindNext(SR) <> 0;
   FindClose(SR);
 end;
end;

procedure TForm1.OnMsgQuit(var Message: TMessage);
begin
 inc(i);
 Memo1.Lines.Add(DateTimeToStr(now));
 if i > 2 then
 begin
   CloseWindow(MainMenu1.WindowHandle);
   Close;
 end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
 PostMessage(Self.Handle, WM_USER + $100, 0, 0);
end;

end.


 
O'ShinW ©   (2013-04-12 08:47) [17]

кстати, тут

> procedure TForm1.OnMsgQuit(var Message: TMessage);

можно сделать все что надо :
> всё, что пользователь набрал сохраняется.


зы
описался немного с WindowHandle - так хоть бы кто попробовал начать набирать - ide бы и подсказал, как правильно

зы2
Германн
От ты меня зацепил :)

> А сам пробовал?

А ты? :)


 
Игорь Шевченко ©   (2013-04-12 09:57) [18]


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


в корзину однозначно


 
O'ShinW ©   (2013-04-12 11:03) [19]

кстати, "рактор" - это что такое?


 
robt   (2013-04-12 13:41) [20]


> Закрываю программу-рактор - по бездействию пользователя
> в течении пяти минут.

самая тупая и безумная идея в ПО что я встречал за всю жизнь


 
O'ShinW ©   (2013-04-12 14:11) [21]

не совсем.

Есть у нас комп, туда по RDP ходят юзеры. Там, в т.ч., есть и моя программа.
Периодически ее надо обновить.
Обычно обновление не критично, и я жду пока все юзеры закончат работу.
Но некоторые просто отключают рабочий стол, не выходя из программ.
т.о. через час бездействия программа закрывается сама.



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

Форум: "Начинающим";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1366454807
clix
2013-04-20 14:46
2014.02.16
stringlist, воборка данных из строки


2-1365088308
Афонтий
2013-04-04 19:11
2014.02.16
Copy String to Char Array


2-1365677841
JohnKorsh
2013-04-11 14:57
2014.02.16
Автоматическое закрытие программы.


2-1365771933
novai
2013-04-12 17:05
2014.02.16
TStringList дефолтное значение


2-1366182901
ttt
2013-04-17 11:15
2014.02.16
Перемещение окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский