Простые часы |
Простые часы |
klem4 |
4.02.2007 18:02
Сообщение
#1
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Решил сделать часы на паскале, никогда не делал, ну не знаю просто захотелось) вот только мне кажется в одном месте я прощитался, решив использовать задержку, наверняка ведь на многих машинах Delay(1000) не будет = 1с.
Ну как бы то нибыло вот что получилось, щас сделаю версию уже с "ручной" проверкой, надо ли перерисовывать стрелки. Прикрепленные файлы clock_beta1.pas ( 4.14 килобайт ) Кол-во скачиваний: 318 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
4.02.2007 18:20
Сообщение
#2
|
Гость |
Андрей, а слабО переписать это под Windows, и использовать SetTimer/KillTimer ?
|
volvo |
5.02.2007 12:28
Сообщение
#3
|
Гость |
Вот небольшой набросок тех же самых часов, написанных на почти чистом WinAPI (почти - потому, что все-же используются модули SysUtils + DateUtils)...
clocks.pas ( 7.63 килобайт ) Кол-во скачиваний: 563 Можно запускать несколько копий приложения, при изменении размера окна часы также меняют размер... Надо только добавить несколько функций: 1) запрет дальнейшего уменьшения по достижении какого-то размера, чтобы часы не были слишком маленькими; 2) вывод цифр можно поправить, чтобы во-первых, не выводилось 0 .. 11, а выводилось 1 .. 12, да и сами координаты выводимого текста (а, возможно, и шрифт) мне кажется, надо доработать... 3) ну, в принципе, добавлять можно еще много, только тогда это уже будут не совсем простые часы Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение... P.S. Не стал исправлять программу, но заметил, что в ней не освобождается контекст устройства после обработки WM_TIMER... Естественно, поскольку это событие происходит ежесекундно, а контекст создается, и не освобождается - программа начинает "поедать" память. Перед выходом из блока If draw Then ... в обработчике WM_TIMER добавить ReleaseDC(Window, DC); Эскизы прикрепленных изображений |
Bokul |
6.02.2007 0:17
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Если есть желание, давайте доработаем проект... Выбирайте, или это будет работа с API (но без ООП), или через Graph (но ООП), и так и так можно сделать довольно интересное приложение... У меня есть. Я за API, только почему без ООП? А какие идеи насчет новых фич? Может вместо окна рисоваться на десктопе? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
6.02.2007 0:28
Сообщение
#5
|
Гость |
Цитата Я за API, только почему без ООП? Потому, что идеология работы с WinAPI подразумевает процедурный стиль, ООП - это надо свою VCL делать Насчет фич - есть несколько идей. Например, добавить возможность сокрытия часов в трей, и по наведению мыши показывать такие небольшие часики (может быть, даже цифровые, возможно - показывать еще и текущую дату), что-то типа того, что делает WMP когда минимизирован, показывает Preview, а по Restore часов сделать их, скажем, полупрозрачными, лежащими OnTop, где-нибудь в углу экрана, но не мешающими работать с другими программами (прозрачными не только визуально, но и для событий... Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши)... Идей много, реализовать бы хоть часть Ждем автора темы, что он скажет, может быть у него другие идеи насчет дальнейшего развития программы... |
Archon |
6.02.2007 1:18
Сообщение
#6
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Очень интересно! Надеюсь тема не заглохнет.
PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением? -------------------- Close the World...txeN eht nepO
|
Bokul |
6.02.2007 1:30
Сообщение
#7
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата PS Для рисования на десктопе, вроде ссылка на окно должна быть с нулевым значением? Ну да, там все просто. Цитата Если интересно - покажу, как это делается, приложение "пропускает" сквозь себя клики мыши "Пропускает" значит не обрабатывает? Вообщем идеи у volvo что надо, осталось только сделать.. Цитата и по наведению мыши показывать такие небольшие часики, что-то типа того, что делает WMP когда минимизирован А можешь сказать куда подкопаться для этого надо? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
6.02.2007 1:45
Сообщение
#8
|
Гость |
Цитата "Пропускает" значит не обрабатывает? Именно не обрабатывает... Просто не реагирует на клик мышью, например Попробуй запустить ICQ и сделать его окно полупрозрачным, а потом кликни на что-то, что находится ПОД окошком ICQ... Что будет? Сообщение обработает какое окно ? А есть способ сделать так, чтобы сообщение "прошло ниже", как будто нашего окна вообще нет на экране...Цитата А можешь сказать куда подкопаться для этого надо? Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно...А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? Когда сработает обработчик этого события? |
Bokul |
6.02.2007 2:21
Сообщение
#9
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Могу... При добавлении иконки в трей делается CallBack-функция, так? Ну, что-то вроде оконной функции приложения, которая, к примеру, отслеживает нажатие на иконку в трее, чтобы восстановить окно... А если в ней перехватить WM_MOUSEMOVE, как ты думаешь, что произойдет? Когда сработает обработчик этого события?. Ну это понятно. Интересует как и куда ты планируешь выводить часы по наведению на иконку. Цитата А есть способ сделать так, чтобы сообщение "прошло ниже", как будто нашего окна вообще нет на экране... Как? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
6.02.2007 2:30
Сообщение
#10
|
Гость |
Цитата(Bokul @ 6.02.2007 1:21) Интересует как и куда ты планируешь выводить часы по наведению на иконку. Над таскбаром, например (прямо там, где находится Hint от приложения, свернутого в трей)... Да какая разница, куда - изменить положение можно одной строкой Я ж не собираюсь показывать окно полностью: говорилось о превью - значит, маленькое окошко с маленькими часиками, но часы все равно должны ходить... А когда мыша ушла с иконки в трее - превью медленно "растворяется". Цитата(Bokul @ 6.02.2007 1:21) Как? А подумать? |
Bokul |
6.02.2007 2:39
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата А подумать? Ну чтобы так просто, я не вижу, не знаю способа. А так, может можно поставить фильтр на распределения сообщений по программным потокам с системной очереди - если оно адресованно нам, то пересылаем его к нижнему окну (которое еще надо определить). -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
6.02.2007 2:42
Сообщение
#12
|
Гость |
Bokul, выдыхай... И больше эту траву не кури...
Все проще гораздо... Hint - используются регионы... |
Bokul |
6.02.2007 2:45
Сообщение
#13
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Hint - используются регионы ... English version please.. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
6.02.2007 2:47
Сообщение
#14
|
Гость |
|
Altair |
6.02.2007 10:00
Сообщение
#15
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Хочу такие часы на рабочий стол себе. Что бы прямо на десктоп рисовалось...
klem4, доделывай давай, раз начал -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 27.05.2024 11:43 |