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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 18:53   #1
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию Органайзер

Делаю органайзер для себя.
Столкнулся с 2мя проблемами.
1.Как сворачивать программу в трей?
2.Как сделать что б в определенное системное время(в какое именно можно менять в самой программе) выскакивало другое окно. Как нормально сохранять время в которое будет выскакивать окно и как постоянно проверять системное время и сравнивать с заданым?
Rio309 вне форума Ответить с цитированием
Старый 08.11.2008, 19:17   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
1.Как сворачивать программу в трей?
Для этого можно использовать компонент CoolTrayIcon.

Цитата:
2.Как сделать что б в определенное системное время(в какое именно можно менять в самой программе) выскакивало другое окно. Как нормально сохранять время в которое будет выскакивать окно и как постоянно проверять системное время и сравнивать с заданым?
Узнать системное время и дату можно так:
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Edit1.Text:=TimeToStr(Now);//Системное время
Edit2.Text:=DateToStr(Now);//Системная дата
Edit3.Text:=DateTimeToStr(Now);//Системная дата с временем
End;
Проверку системного времени можете поставить в таймер.
Компонент CoolTrayIcon можете найти здесь: http://programmersforum.ru/showthrea...t=23556&page=2
Всегда рад помочь!

Последний раз редактировалось Terran; 08.11.2008 в 19:23.
Terran вне форума Ответить с цитированием
Старый 08.11.2008, 20:25   #3
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию

Спасибо. Попробую доделать прогу .
Rio309 вне форума Ответить с цитированием
Старый 08.11.2008, 22:16   #4
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию

Как сделать что б при нажатии крестика справа сверху не закрывало программу, а сворачивало в трей.
Все остальное вроде понял через примеры, а это там как то странно сделано .
Rio309 вне форума Ответить с цитированием
Старый 08.11.2008, 22:26   #5
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Можно так сделать:
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=false;
  // и тут ты ее сворачиваеш в трей
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 08.11.2008, 22:45   #6
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию

Спасибо . А теперь обратная проблема. Как закрыть програму. Сворачивает в трей при любой попытке закрыть програму, даже не через крестик справа сверху.
А canclose работает только в процедуре closequary
Rio309 вне форума Ответить с цитированием
Старый 08.11.2008, 22:55   #7
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Ну давай сделаем так =):
Код:
var
  BClosed:boolean=false;
...
procedure TForm1.CloseBtn(Sender: TObject);
begin
  BClosed:=true;
  form1.close;
end;
...
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if BClosed then exit;
  Canclose:=false;
  // и тут ты ее сворачиваеш в трей
end;
...
но ИМХО это коряво ^_^
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 09.11.2008, 00:09   #8
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию

И последняя проблемма. Как нормально сохранить дату и время в одном стринге в формате например: "08.11.2008 23:05:00". И сделать нормальный ввод пользователю, что б он не мог ошибится.
И как проследить:
Я поставил таймер который каждую секунду проверяет время, и если оно заданное, то выскакивает окно. Но а что если компьютер в заданное время был выключен? Надо сделать что б при включении програмы оно таки выскакивало.
Rio309 вне форума Ответить с цитированием
Старый 09.11.2008, 00:15   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от Rio309 Посмотреть сообщение
Как сделать что б при нажатии крестика справа сверху не закрывало программу, а сворачивало в трей.
Все остальное вроде понял через примеры, а это там как то странно сделано .
Можете сделать так:
Код:
Private
    { Private declarations }
     Procedure WMQueryEndSession(Var Message: TMessage);
     Message WM_QUERYENDSESSION;
-----
Var
    SessionEnding: Boolean;
Procedure TForm1.WMQueryEndSession(Var Message: TMessage);
Begin
SessionEnding:=True;
Message.Result:=1;
End;

Procedure TForm1.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
Begin
CanClose:=((Not XPCheckBox1.Checked) Or SessionEnding);
If Not CanClose Then
Begin
Application.Minimize;
CoolTrayIcon1.HideMainForm;
End;
End;
Здесь ещё есть XPCheckBox1. Когда у него стоит галочка, то прога сворачивается на крестик, а когда нет, то закрывается.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 09.11.2008, 00:17   #10
Rio309
Форумчанин
 
Регистрация: 06.02.2008
Сообщений: 140
По умолчанию

С треем я уже разобрался, спасибо.
Rio309 вне форума Ответить с цитированием
Ответ


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