Н ш
г
Дельфиний
органайзер
Сергей ПАРИЖСКИЙ
http://w w w .heel.by.ru
г
Сегодня напишем две программы — первая будет записывать сообщение для напоминания и дату,
вторая должна мониторить систему, проверяя, не пришло ли время для напоминания. Претворять
идею в жизнь будем средствами Пе!рЫ, используя стандартный набор компонентов.
Запись сообщеппй
С
начала напишем программу, принимающую от пользо-
вателя сообщения. Все необходимые компоненты мо-
жете взять на вкладке Standard. В свойствах измените
C a p t io n
и
T e x t ,
для
e d i t l
обязательно напишите стро-
ку
д е н ь .м е с я ц . г о д ч а с ы :м и н у т ы ,
чтобы пользователь знал
формат записи даты и времени. Все даты и сообщения бу-
дем хранить в реестре. Единственное событие — запомина-
ние сообщений — происходит при нажатии на кнопку
B u t -
to n !.:
v a r
r e g : T r e g is t r y ;
//д л я работы с реестром
i : in t e g e r ;
//счетч и к
b e g in
r e g : = t r e g i s t r y . c r e a t e ;
r e g . r o o t k e y : =HKEY_CURRENT__USER;
i f r e g . o p e n k e y ( ' \ S o ftw a r e \ G o o d M e m \ T im e '. t r u e ) t h e n
//созд а ем каталог для записи времени
f o r i : = l t o 1 00 d o /
/цикл для проверки свободных клю-
чей для записи, чтобы не затереть предыдущие ключи
i f r e g . V a lu e E x is t s ( I n t T o s t r ( і ) ) = f a ls e t h e n b e g in
//к о гд а нашли
r e g . W r i t e S t r i n g ( in t T O s t r
( і )
, E d i t l . T e x t ) ;
//за п о л -
няем новой датой
b r e a k ; /
/и прерываеиицикл
e n d ;
i f r e g . o p e n k e y ( ' \ S o ftw a r e \ G o o d M e m \ M e s s a g e ' . t r u e )
t h e n /
/каталог для записи сообщений
r e g . W r i t e S t r i n g ( i n t T o S t r
( і )
, m emo1 . T e x t )
; //запи сы -
ваем сообщение, которое связано с этой датой
r e g . c lo s e k e y ;
s h o w m e s s a g e ( 'С о о б щ е н и е з а н е с е н о в п а м я т ь ! ' ) ;
//У в е -
домляем об успешной записи
В раздел uses допишите модуль
R e g is t r y ,
при помощи
которого мы будем работать с реестром. Чтобы не засорять
другие каталоги своими ключами, которых может быть нема-
ло, мы создали свой каталог
GoodMem .
Он содержит две вло-
женные папки: для записи времени
(Tim e)
и сообщений
(M es-
sa g e ).
Для того чтобы время соответствовало сообщению,
мы называем их ключи одинаковыми именами.
Вторая программа, как я уже говорил, будет проверять, не
пришло ли время показать сообщение. Она будет работать
незаметно для пользователя, но когда нужно будет показать
сообщение, мы будем делать ее видимой, пока пользователь
не нажмет на кнопку Ok, после чего она будет прятаться и
продолжать мониторинг. В самом верху формы нашей второй
программы размещен la b e l, в который будет внесена дата,
а пока в свойстве caption пусто. Ниже размещен
memo,
ко-
торый будет содержать сообщение, считанное с реестра. В
свойствах установите
R e a O n ly
как
t r u e ,
также следует очи-
стить свойство
L in e s
от текста по умолчанию. Внизу будет
размещена кнопка, при нажатии на которую форма будет
прятаться. Для того чтобы не тормозить систему, нагружая ее
бесконечным циклом, мы будем использовать компонент
T im e r
из вкладки
S y ste m .
В свойстве
I n t e r v a l
напишите
3 5 0 0 0 .
Это
означает, что программа наблюдения будет проводить про-
верку не постоянно, а каждые 35 секунд. Последнее, что ос-
талось, — это изменить свойства главной формы. Можете очи-
стить свойство
C a p t io n ,
так как заголовка программа иметь
не будет. Измените свойство
B o r d e r S t y le
на
b s N o n e ,
чтобы
убрать заголовок окна. Свойство
F o r m S t y le
установите в
fs S ta y O n T o p ,
а
P o s it i o n — p o S c r e e n C e n te r ,
для обеспече-
ния появления сообщения в центре экрана и поверх всех ос-
тальных окон.
Пользователь нынче ленивый пошел, каждый раз сам про-
грамму не захочет запускать, так что в событии формы Оп-
C r e a t e
мы ему поможем:
p a t h : = A p p lic a t io n . E x e N a m e ;
r e g : = t r e g i s t r y . c r e a t e ;
r e g . r o o t k e y : = H K EY_CU R R EN T_U SER ;
i f r e g . o p e n k e y ( '\ S o f t w a r e \ M ic r o s o f t\ W in d o w s \
C u r r e n t V e r s io n X R u n '. t r u e ) t h e n
b e g in
r e g . W r it e S t r i n g ( 'G o o d M e m '.p a t h ) ;
r e g . c lo s e k e y ;
end;
В раздел
u s e s
допишите модуль
R e g is t r y ,
также сразу
объявите все переменные, которые м,ы будем, использовать
на протяжении программы:
v a r
i : in t e g e r ;
r e g : T R e g is t r y ;
p a t h : s t r i n g ; /
/полный путь к нашей программе
v a l : s t r i n g ; /
/для сверки дат
Для обеспечения полной «невидим,ости» нашей форм,ы в
ее свойствах следует изменить
v i s i b l e
на
f a l s e .
Затем зай-
дите в меню Project > View Source и сотрите весь I од, что
там написан, вставив вместо него следующий:
p r o g r a m P r o j e c t l ;
uses
F o r m s ,
W in d o w s ,
O n l t l i n ' U n i t l . p a s ' { F o r m l} ;
{ $ R * . r e s )
b e g in
A p p l i c a t i o n . I n i t i a l i z e ;
S h o w W in d o w ( A p p lic a t io n . H a n d le , S W _ H ID E );
F o r m l: = T f o r m l. C r e a t e ( n il) ;
A p p l i c a t i o n . R u n ;
w h ile ( t r u e ) d o b e g in
A p p l i c a t i o n . P r o c e s s M e s s a g e s ;
e n d ;
e n d .
Теперь заполним единственное событие Тайм,ера, кото-
рое будет выполняться каждые 35 секунд:
r e g : = t r e g i s t r y . c r e a t e ;
r e g . ro o tk e y := H K E Y _ C U R R E N T _ U S E R ;
i f r e g . o p e n k e y ( '\ S o ft w a r e \ G o o d M e m \ T im e '. t r u e ) t h e n
b e g in
fo r
i : = l t o
100 do begin
i f r e g . V a l u e E x i s t s ( I n t T o s t r ( i ) ) = f a l s e t h e n c o n t in -
u e ; /
/проверяем все ключи
v a l: = r e g . R e a d s t r in g ( I n t T o S t r ( i) ) ;
i f F o r m a tD a te T im e
<
'dd/mm/yy hh:mm',
D a te + T im e
)
= v a l
t h e n b e g in /
/если нашли текущее время
О кончание на стр. 43
предыдущая страница 38 Мой Компьютер 2005 03 читать онлайн следующая страница 40 Мой Компьютер 2005 03 читать онлайн Домой Выключить/включить текст