IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Простые часы
сообщение
Сообщение #1


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Решил сделать часы на паскале, никогда не делал, ну не знаю просто захотелось) вот только мне кажется в одном месте я прощитался, решив использовать задержку, наверняка ведь на многих машинах Delay(1000) не будет = 1с.

Ну как бы то нибыло вот что получилось, щас сделаю версию уже с "ручной" проверкой, надо ли перерисовывать стрелки.

Прикрепленное изображение


Прикрепленные файлы
Прикрепленный файл  clock_beta1.pas ( 4.14 килобайт ) Кол-во скачиваний: 504


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Андрей, а слабО переписать это под Windows, и использовать SetTimer/KillTimer ? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Вот небольшой набросок тех же самых часов, написанных на почти чистом WinAPI (почти - потому, что все-же используются модули SysUtils + DateUtils)...

Прикрепленный файл  clocks.pas ( 7.63 килобайт ) Кол-во скачиваний: 1003


Можно запускать несколько копий приложения, при изменении размера окна часы также меняют размер...

Надо только добавить несколько функций:
1) запрет дальнейшего уменьшения по достижении какого-то размера, чтобы часы не были слишком маленькими;
2) вывод цифр можно поправить, чтобы во-первых, не выводилось 0 .. 11, а выводилось 1 .. 12, да и сами координаты выводимого текста (а, возможно, и шрифт) мне кажется, надо доработать...
3) ну, в принципе, добавлять можно еще много, только тогда это уже будут не совсем простые часы smile.gif

Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение... yes2.gif

P.S. Не стал исправлять программу, но заметил, что в ней не освобождается контекст устройства после обработки WM_TIMER... Естественно, поскольку это событие происходит ежесекундно, а контекст создается, и не освобождается - программа начинает "поедать" память. Перед выходом из блока If draw Then ... в обработчике WM_TIMER добавить ReleaseDC(Window, DC);


Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение...

У меня есть. smile.gif Я за API, только почему без ООП? А какие идеи насчет новых фич? Может вместо окна рисоваться на десктопе?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
Я за API, только почему без ООП?
Потому, что идеология работы с WinAPI подразумевает процедурный стиль, ООП - это надо свою VCL делать smile.gif

Насчет фич - есть несколько идей. Например, добавить возможность сокрытия часов в трей, и по наведению мыши показывать такие небольшие часики (может быть, даже цифровые, возможно - показывать еще и текущую дату), что-то типа того, что делает WMP когда минимизирован, показывает Preview, а по Restore часов сделать их, скажем, полупрозрачными, лежащими OnTop, где-нибудь в углу экрана, но не мешающими работать с другими программами (прозрачными не только визуально, но и для событий... Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши)...

Идей много, реализовать бы хоть часть smile.gif

Ждем автора темы, что он скажет, может быть у него другие идеи насчет дальнейшего развития программы...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Очень интересно! Надеюсь тема не заглохнет.

PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением?


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением?

Ну да, там все просто.
Цитата
Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши

"Пропускает" значит не обрабатывает?

Вообщем идеи у volvo что надо, осталось только сделать..
Цитата
и по наведению мыши показывать такие небольшие часики, что-то типа того, что делает WMP когда минимизирован

А можешь сказать куда подкопаться для этого надо?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
"Пропускает" значит не обрабатывает?
yes2.gif Именно не обрабатывает... Просто не реагирует на клик мышью, например smile.gif Попробуй запустить ICQ и сделать его окно полупрозрачным, а потом кликни на что-то, что находится ПОД окошком ICQ... Что будет? Сообщение обработает какое окно ? А есть способ сделать так, чтобы сообщение "прошло ниже", как будто нашего окна вообще нет на экране...

Цитата
А можешь сказать куда подкопаться для этого надо?
Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно...

А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? smile.gif Когда сработает обработчик этого события?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно...

А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? Когда сработает обработчик этого события?.

Ну это понятно. Интересует как и куда ты планируешь выводить часы по наведению на иконку.

Цитата
А есть способ сделать так, чтобы сообщение "прошло ниже", как будто нашего окна вообще нет на экране...

rolleyes.gif Как?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Bokul @ 6.02.2007 1:21)
Интересует как и куда ты планируешь выводить часы по наведению на иконку.
Над таскбаром, например (прямо там, где находится Hint от приложения, свернутого в трей)... Да какая разница, куда - изменить положение можно одной строкой smile.gif Я ж не собираюсь показывать окно полностью: говорилось о превью - значит, маленькое окошко с маленькими часиками, но часы все равно должны ходить... А когда мыша ушла с иконки в трее - превью медленно "растворяется". rolleyes.gif

Цитата(Bokul @ 6.02.2007 1:21)
rolleyes.gif Как?
А подумать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
А подумать?

Ну чтобы так просто, я не вижу, не знаю способа. А так, может можно поставить фильтр на распределения сообщений по программным потокам с системной очереди - если оно адресованно нам, то пересылаем его к нижнему окну (которое еще надо определить).


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






blink.gif blink.gif Bokul, выдыхай... И больше эту траву не кури...

Все проще гораздо... Hint - используются регионы... smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Hint - используются регионы ...

English version please.. smile.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






SetWindowRgn

"Is that better?" © Men In Black ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Хочу такие часы на рабочий стол себе. Что бы прямо на десктоп рисовалось...

klem4, доделывай давай, раз начал smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 13:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name