Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Peter, DEMBEL  
Форум NeoBook » Всё о программе NeoBook » Сценарии и скриптовые языки в Neobook » Урок по созданию таймера
Урок по созданию таймера
СергейДата: Пн, 24 Августа 2009, 12:03 | Сообщение # 1
Необукер
Всем привет!
Решил восполнить пробел раздела НБ - уроки, т.к. уроков нет. Это мой первый урок так, что сильно не пинать :)
Не буду отходить от традиций и начну уроки с простых примеров.
Итак 1-урок Таймер
Сразу оговорю пару моментов, урок рассчитан на тех, кто знаком с интерфейсом НБ, и вопросы - "как мне создать кнопку" буду игнорировать, т.к. для изучения интерфейса нужен отдельный урок, без обид.
часть 1

Для начала составим краткий "бизнес-план", это упрощает создания проекта и не дает возможности уйти в "сторону"
1-Сделать интерфейс нашего Таймера (я использовал штатные средства НБ)
2-Функционал Таймера, т.е. что будет делать таймер:
a- Выключить ПК
b- Перезагрузить ПК
c- Открыть файл
d- Включить\Выключить Интернет
3-Дополнительные функции
------------------------------------------------
Создадим новый проект
-размеры 600х300
-приложение типа System Tray
-(Свойства-->Окно):Стандартное окно, убираем галочки с "развернуть", "Свернуть", "Раздвижное"
-Цвет фона у меня BtnFace(см.рис)

Создаем 4 объекта Rectangle(Прямоугольник)с размерами:
-один 588х31
-два 290х130
-и последний 588х84
-заливку убираем (Hollow)
-рамку ставим(Gray)
и размещаем как на рис.
Ими мы разграничим наше приложение по областям, их будет 4-областей.
Помещаем на поле 4 Радиокнопки, в заголовках пишем номера, для первой 1 для второй 2 и т.д. и зададим им группу [vibor], это будет выбор действий для Таймера (см.рис.), в "Команде-->Click" пропишите переменную [actions] на событие клик, код
Code
SetVar "[actions]" "выключить компьютер"
то же проделайте с другими (значения сагласно задачам) и еще две кнопки "Включить" и "Очистить".

Теперь кинем на рабочий стол 4-объекта "Text", и дадим имена нашим действиям согласно нашему бизнес плану, в первом пишем "Выключать ПК", во втором "Перезагрузить ПК" и т.д.
Теперь нам надо сделать возможность выбора времени, для простоты я использовал объект Слайдер (TrackBar), помещаем на поле 3 Слайдера
1-присваеваем переменную (для позиции ползунка) [H] часы
-настройки: мин. значение ставим-0, макс-23, начальное-0
2-присваеваем переменную (для позиции ползунка) [M] минуты
-настройки: мин. значение ставим-0, макс-59, начальное-0
3-присваеваем переменную (для позиции ползунка) [S] секунды
-настройки: мин. значение ставим-0, макс-59, начальное-0
Ну вот главные элементы готовы, осталось сделать пару поправок, дать имена Слайдерам и разграниченным полям. Озвучивать не буду по причине -там все просто- сделайте самостоятельно как показано на рис(3)
Ну вот можно запустить проект и посмотреть, что получилось, но прежде чем запустить....
Если мы протестируем проект, то он спрячется в трей, т.к. у нас выбран режим System Tray
Чтоб убрать это неудобство во время тестирования, нужно в проекте в Actions(Команды) на вкладке (F6-->Actions(Команды)-->StartUp) написать следующий код:
Code
SetVar "[StartInSystemTray]" "False"
Он запрещает приложению сворачиваться в трей.
Последних штрих - чтоб цифры у группы Радиокнопок не выделялись, им надо задать цвет шрифта такой же, как у фона
Прикрепления: 2367939.jpg (82.1 Kb) · 8191128.jpg (28.2 Kb) · 9861860.jpg (38.5 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 20:48
 
СообщениеВсем привет!
Решил восполнить пробел раздела НБ - уроки, т.к. уроков нет. Это мой первый урок так, что сильно не пинать :)
Не буду отходить от традиций и начну уроки с простых примеров.
Итак 1-урок Таймер
Сразу оговорю пару моментов, урок рассчитан на тех, кто знаком с интерфейсом НБ, и вопросы - "как мне создать кнопку" буду игнорировать, т.к. для изучения интерфейса нужен отдельный урок, без обид.
часть 1

Для начала составим краткий "бизнес-план", это упрощает создания проекта и не дает возможности уйти в "сторону"
1-Сделать интерфейс нашего Таймера (я использовал штатные средства НБ)
2-Функционал Таймера, т.е. что будет делать таймер:
a- Выключить ПК
b- Перезагрузить ПК
c- Открыть файл
d- Включить\Выключить Интернет
3-Дополнительные функции
------------------------------------------------
Создадим новый проект
-размеры 600х300
-приложение типа System Tray
-(Свойства-->Окно):Стандартное окно, убираем галочки с "развернуть", "Свернуть", "Раздвижное"
-Цвет фона у меня BtnFace(см.рис)

Создаем 4 объекта Rectangle(Прямоугольник)с размерами:
-один 588х31
-два 290х130
-и последний 588х84
-заливку убираем (Hollow)
-рамку ставим(Gray)
и размещаем как на рис.
Ими мы разграничим наше приложение по областям, их будет 4-областей.
Помещаем на поле 4 Радиокнопки, в заголовках пишем номера, для первой 1 для второй 2 и т.д. и зададим им группу [vibor], это будет выбор действий для Таймера (см.рис.), в "Команде-->Click" пропишите переменную [actions] на событие клик, код
Code
SetVar "[actions]" "выключить компьютер"
то же проделайте с другими (значения сагласно задачам) и еще две кнопки "Включить" и "Очистить".

Теперь кинем на рабочий стол 4-объекта "Text", и дадим имена нашим действиям согласно нашему бизнес плану, в первом пишем "Выключать ПК", во втором "Перезагрузить ПК" и т.д.
Теперь нам надо сделать возможность выбора времени, для простоты я использовал объект Слайдер (TrackBar), помещаем на поле 3 Слайдера
1-присваеваем переменную (для позиции ползунка) [H] часы
-настройки: мин. значение ставим-0, макс-23, начальное-0
2-присваеваем переменную (для позиции ползунка) [M] минуты
-настройки: мин. значение ставим-0, макс-59, начальное-0
3-присваеваем переменную (для позиции ползунка) [S] секунды
-настройки: мин. значение ставим-0, макс-59, начальное-0
Ну вот главные элементы готовы, осталось сделать пару поправок, дать имена Слайдерам и разграниченным полям. Озвучивать не буду по причине -там все просто- сделайте самостоятельно как показано на рис(3)
Ну вот можно запустить проект и посмотреть, что получилось, но прежде чем запустить....
Если мы протестируем проект, то он спрячется в трей, т.к. у нас выбран режим System Tray
Чтоб убрать это неудобство во время тестирования, нужно в проекте в Actions(Команды) на вкладке (F6-->Actions(Команды)-->StartUp) написать следующий код:
Code
SetVar "[StartInSystemTray]" "False"
Он запрещает приложению сворачиваться в трей.
Последних штрих - чтоб цифры у группы Радиокнопок не выделялись, им надо задать цвет шрифта такой же, как у фона

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:03
СергейДата: Пн, 24 Августа 2009, 12:10 | Сообщение # 2
Необукер
часть 2

У нас поле разделено (как писал выше) на 5 областей, Безымянное, Таймер, Действие, Итог, Дополнительно (так и обозначим для идентификации)
--------
Теперь зададим кнопке "Включить" действие. Я буду использовать Подпрограммы (далее ПП)можно вызвать это окно так: "Проект-->ПП-->Новый" или так "F6-->Actions(Команды)-->вкладка Подпрограммы (ПП)", назовем "check" в открывшемся окне вставим между :check и Return следующий код:
Code
:check
SetVar "[cheks]" "True"
IfEx "[H]=[#34][#34] OR [M]=[#34][#34] OR [S]=[#34][#34]"
      AlertBox "Ошибка!" "Вы не выбрали время"
      SetVar "[cheks]" "False"
EndIf
IfEx "[vibor]=[#34][#34] or [vibor]=0"
       AlertBox "Ошибка!" "Вы не выбрали действие"
       SetVar "[cheks]" "False"
EndIf
.проверим переменную [cheks] на True\False, если False, то ничего не делаем
If "[cheks]" "=" "False"
       SetVar "[cheks]" ""
      Else
       MessageBox "Таймер" "Ваш выбор следующий: ||Действие: [actions]|Время исполнения: [H]ч. [M]мин. [S]сек.|| Подтверждаете назначенное действие?!" "Да|Нет" "[otvet]"
            
        .тут будет действие, если пользователь согласился
       EndIf
EndIf
Return
разберем код
Переменная (SetVar "[cheks]" "True") для слежения хода проверки, можно и не создавать
Нам необходимо проверить 3 переменные в области Таймер на пустоту Можно использовать IF, но тогда код получится раздутым, а упростим мы оператором IfEx. Синтаксис будет выглядеть так ЕСЛИ ЧАСЫ=ПУСТО или МИН=ПУСТО или СЕК=ПУСТО, ТО далее по коду
То же самое и с проверкой на отрицательность "Действие" (IfEx "[vibor]=[#34][#34]")
OR- означает "ИЛИ" AND - "И"
Чтоб подключить "ПП" в "Команде-LeftClick" кнопки поместим след. код:
Code
GoSub "check"

Запустите тест и ничего не делая нажмите кнопку "Включить"... Появилось сообщение об ошибке?! Значит код работает. Теперь поставим Слайдеры на любые значения, и сделаем любой выбор в "Действиях", нажимаем кнопку "Включить" и....Появилось сообщение с надписью "Ваш выбор следующий...", значит все работает. Ну что ж, пора сделать что то, чтобы работало, например, открыть файл при достижении заданного времени.
Открываем "Команду-Click" той Радиокнопки, которая отвечает за открытие файла (у меня он под номером 3) и пишем код
Code
SetVar "[openFiles]" ""
      FileOpenBox "Выбор файла" "Все файлы |*.*" "[ProgramFiles]" "[openFiles]" ""
If "[openFiles]" "=" ""
      .если юзер отказался от выбора, очищаем переменные.
      SetVar "[vibor]" ""
      SetVar "[actions]" ""
Еlse
      SetVar "[actions]" "открыть файл - [openFiles]"
EndIf
"FileOpenBox" Позволяет пользователю выбрать файл через стандартное диалоговое окно открытия
Открываем редактор "ПП-check" и в блоке (If "[otvet]" "=" "1") ставим следующий код
Code
TimerStart "Timer1" "1000"
, т.е. если в сравнениях все верно, и пользователь дал согласие на выполнение планируемого действия, то запустим таймер.
Создаем объект "Timer (таймер)" в свойствах выставляем Wait for "TimerStart" (Ждать команду "TimerStart"), и пишем код
Code
IfEx "[H]=[Hour] AND [M]=[Minute] AND [S]=[Second]"
GoSub "actions"
EndIf
Переменные [Hour],[Minute] и [Second] - это встроенные глобальные переменные далее "ВГП"(подробности в хелпе) С оператором IfEx мы познакомились, и с командой GoSub тоже, но у нас нет пока этой команды, следующий шаг создадим "ПП-actions"
переходим в "ПП". Создаем после "ПП-check" новую ПП и назовем "actions". Вставляем туда код
Code
TimerStop "Timer1"
If "[vibor]" "=" "3"
Run "[openFiles]" "" "RunOnce+LoadComplete" "" ""
EndIf
команда "Run" отвечает за запуск внешнего Windows-приложения, после выполнения команды останавливаем таймер и очищаем переменные. Можно проверить таймер, запускаем в тестовом режиме и проверяем... Ура, у нас получилось! Теперь сделаем удобные фичи, чтоб Пользователь постоянно не подгонял по текущему времени, мы облегчим и создадим кнопку, которая и будет это делать. И так кнопку в студию назовем ее...так и назовем "выставить по текущему времени" в "LeftClick" пишем код
Code
SetVar "[H]" "[Hour]"
SetVar "[M]" "[Minute]"
SetVar "[S]" "[Second]"
вы уже знакомы с "ВГП", в этом коде мы свои переменые заполняем "ВГП". Неплохо бы в нашей программе показывать текущее системное время, создаем объект "Text" и вставляем такой текст "Текущее время: [Time24]". Эта переменная "Time24" тоже "ВГП". Поместить это объект можете в любом месте области "Безымянное", я поместил его с права


Добавлено (24 Август 2009, 12:10)
---------------------------------------------
Ну что ж, основное дело сделано, теперь доделаем скрипт для действий "Выключить ПК" и "Перезагрузить ПК". Открываем "ПП" и в "ПП-actions" добавляем код, Кстати для того чтоб выключить или перезагрузить ПК в НБ нет команд, но мы воспользуемся средствами самой Windows, тут есть инфа предоставленная Омаром список команд
Code
...................[1]выключить компьютер
If "[vibor]" "=" "1"
.Run "shutdown.exe" "-s -f -t 00" "Hidden" "" ""
EndIf
....................[2]перезагрузить компьютер
If "[vibor]" "=" "2"
.Run "shutdown.exe" "-r -f -t 00" "Hidden" "" ""
EndIf
....................[4]Включить/Отключить интернет
If "[vibor]" "=" "4"
      ..пока так подготовим оператор
EndIf
команду "Run" я закомментировал от случайного нажатия при тесте. перед сборкой "Таймера" не забудьте снять коменты.
Далее мы заполним область "Итог" Вы можете назвать это поле по другому. По сути это информационная область выбранных действий пользователя. Создаем два объекта "Text" в одном пишем "Действие: - [actions]" в другом "Время исполнения: - [H]ч. [M]мин." [S]сек. Размещаем в области "Итог". Теперь, когда пользователь выбрал время и действие, то информация отобразится в этой области.
Теперь перейдем к области "Дополнительно". Для чего же она нужна?! Для нужных на мой взгяд опций. Например, Пользователь частенько использует таймер для определенной задачи, и чтоб ему постоянно не забивать одно и тоже мы сделаем память, можно еще дополнительно добавить функцию Выход из приложения после исполнения задачи, еще напоминалку. И так кидаем на поле в область "Дополнительно" 3 объекта "CheckBox" и зададим Название = Переменная 1)"Запомнить" = [saved]
2)"Предупредить за:" = [napomnit]
3)"Закрыть" = [exit]
к "Предупредить за:" необходимо добавить объект "ComboBox"(список) с переменной [napomnMIN], в список пунктов надо написать цифры "1,2,3,4,5..." они будут означать за которое время предупредить о выполнение задания
теперь переходим в ПП и создаем новую ПП с именем "saveParam" и прежде чем там кодировать надо определится, что нам понадобится сохранять. Первое это время, 2-это действие, 3-напоминалка так и запишем код:
Code
If "[saved]" "=" "Checked"
      SetVar "[zapisParam]" "H=[H][#13]M=[M][#13]S=[S][#13]"
      SetVar "[zapisParam]" "[zapisParam]vibor=[vibor][#13]actions=[actions][#13]"
      SetVar "[zapisParam]" "[zapisParam]saved=Checked[#13]napomnMIN=[napomnMIN][#13]"
      SetVar "[zapisParam]" "[zapisParam]napomnit=[napomnit][#13]exit=[exit][#13]"
      ..переменная подключения
      FileWrite "[PubDir]timer.ini" "All" "[zapisParam]"
else
      FileExists "[PubDir]timer.ini" "[ok]"
       If "[ok]" "=" "True"
        FileErase "[iniFL]"
        SetVar "[ok]" ""
       EndIf
EndIf
разберем код. Проверяем оператором "If" сделан ли выбор в CheckBox-Запомнить, если поставлена, то сохраняем. Прежде чем сохранить в файл, надо подготовить данные для записи за это будет отвечать переменная [zapisParam] запись каждой переменной для сохранения будет иметь такой вид "H=[H]" почему именно так, объясню позже. Команда "FileWrite(Записать данные в указанную строку внешнего файла.)" наш внешний файл - "[PubDir]timer.ini" где [PubDir](кстати, это ВГП) означает путь к папке, где размещается текущее приложение.
В итоге должно получиться в файле "timer.ini" следующая запись:
Quote
H=11
M=46
S=55
vibor=1
actions=выключить компьютер
saved=Checked
napomnMIN=4
napomnit=Checked
exit=Checkeds

Если выбор в CheckBox-Запомнить не сделан или отменили, то выполняем код находящийся за "else" то есть проверяем на наличие файла "timer.ini" командой "FileExists(Проверить наличие (существование) внешнего или вложенного файла.
)" если он есть, то удаляем командой "FileErase(Удалить внешний файл)". Запустить эту ПП я решил из "ПП-check" записать надо команду (GoSub "saveParam") после команды (TimerStart "Timer1" "1000"). В конце этого урока я приведу полный код ПП. Теперь нам надо загрузить эти данные для этого мы создаем новую ПП и даем имя "loadParam"
пишем туда код
Code
FileExists "[PubDir]timer.ini" "[ok]"
      If "[ok]" "=" "True"
       LoadVariables "[PubDir]timer.ini"
       SetVar "[ok]" ""
      EndIf
Return
новая команда "LoadVariables(Загрузить переменные из файла.)" Чтобы запустить эту ПП перейдем на вкладку "(F6-->Actions(Команды)-->StartUp)" и добавим запись
Code
GoSub "loadParam"
. Т.е. при загрузке приложения выполнится "ПП-loadParam" Ну вот теперь наша программа имеет память :) Из истории, в первом проекте я реализовывал память без команды "LoadVariables", т.е. вот таким способом
Quote
.проверяем файл настроек, если файл имеется, то считываем параметры
FileExists "[PubDir]timer.ini" "[iniParam]"
If "[iniParam]" "=" "True"
FileRead "[PubDir]timer.ini" "All" "[dat]"
StrParse "[dat]" "[#13]" "[dat]" "[l]"
.... и записываем в массив
EndIf
SetVar "[H]" "[dat1]"
SetVar "[M]" "[dat2]"
SetVar "[S]" "[dat3]"
SetVar "[vibor]" "[dat4]"
SetVar "[actions]" "[dat5]"
SetVar "[saved]" "[dat7]"
SetVar "[napomnMIN]" "[dat8]"
SetVar "[napomnit]" "[dat9]"
SetVar "[exit]" "[dat10]"
.
DeleteArray "[dat]" "All"
:) вот такой раздутый код, согласитесь не очень удобно и много недостатков.
Прикрепления: 8410153.jpg (48.6 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 21:09
 
Сообщение
часть 2

У нас поле разделено (как писал выше) на 5 областей, Безымянное, Таймер, Действие, Итог, Дополнительно (так и обозначим для идентификации)
--------
Теперь зададим кнопке "Включить" действие. Я буду использовать Подпрограммы (далее ПП)можно вызвать это окно так: "Проект-->ПП-->Новый" или так "F6-->Actions(Команды)-->вкладка Подпрограммы (ПП)", назовем "check" в открывшемся окне вставим между :check и Return следующий код:
Code
:check
SetVar "[cheks]" "True"
IfEx "[H]=[#34][#34] OR [M]=[#34][#34] OR [S]=[#34][#34]"
      AlertBox "Ошибка!" "Вы не выбрали время"
      SetVar "[cheks]" "False"
EndIf
IfEx "[vibor]=[#34][#34] or [vibor]=0"
       AlertBox "Ошибка!" "Вы не выбрали действие"
       SetVar "[cheks]" "False"
EndIf
.проверим переменную [cheks] на True\False, если False, то ничего не делаем
If "[cheks]" "=" "False"
       SetVar "[cheks]" ""
      Else
       MessageBox "Таймер" "Ваш выбор следующий: ||Действие: [actions]|Время исполнения: [H]ч. [M]мин. [S]сек.|| Подтверждаете назначенное действие?!" "Да|Нет" "[otvet]"
            
        .тут будет действие, если пользователь согласился
       EndIf
EndIf
Return
разберем код
Переменная (SetVar "[cheks]" "True") для слежения хода проверки, можно и не создавать
Нам необходимо проверить 3 переменные в области Таймер на пустоту Можно использовать IF, но тогда код получится раздутым, а упростим мы оператором IfEx. Синтаксис будет выглядеть так ЕСЛИ ЧАСЫ=ПУСТО или МИН=ПУСТО или СЕК=ПУСТО, ТО далее по коду
То же самое и с проверкой на отрицательность "Действие" (IfEx "[vibor]=[#34][#34]")
OR- означает "ИЛИ" AND - "И"
Чтоб подключить "ПП" в "Команде-LeftClick" кнопки поместим след. код:
Code
GoSub "check"

Запустите тест и ничего не делая нажмите кнопку "Включить"... Появилось сообщение об ошибке?! Значит код работает. Теперь поставим Слайдеры на любые значения, и сделаем любой выбор в "Действиях", нажимаем кнопку "Включить" и....Появилось сообщение с надписью "Ваш выбор следующий...", значит все работает. Ну что ж, пора сделать что то, чтобы работало, например, открыть файл при достижении заданного времени.
Открываем "Команду-Click" той Радиокнопки, которая отвечает за открытие файла (у меня он под номером 3) и пишем код
Code
SetVar "[openFiles]" ""
      FileOpenBox "Выбор файла" "Все файлы |*.*" "[ProgramFiles]" "[openFiles]" ""
If "[openFiles]" "=" ""
      .если юзер отказался от выбора, очищаем переменные.
      SetVar "[vibor]" ""
      SetVar "[actions]" ""
Еlse
      SetVar "[actions]" "открыть файл - [openFiles]"
EndIf
"FileOpenBox" Позволяет пользователю выбрать файл через стандартное диалоговое окно открытия
Открываем редактор "ПП-check" и в блоке (If "[otvet]" "=" "1") ставим следующий код
Code
TimerStart "Timer1" "1000"
, т.е. если в сравнениях все верно, и пользователь дал согласие на выполнение планируемого действия, то запустим таймер.
Создаем объект "Timer (таймер)" в свойствах выставляем Wait for "TimerStart" (Ждать команду "TimerStart"), и пишем код
Code
IfEx "[H]=[Hour] AND [M]=[Minute] AND [S]=[Second]"
GoSub "actions"
EndIf
Переменные [Hour],[Minute] и [Second] - это встроенные глобальные переменные далее "ВГП"(подробности в хелпе) С оператором IfEx мы познакомились, и с командой GoSub тоже, но у нас нет пока этой команды, следующий шаг создадим "ПП-actions"
переходим в "ПП". Создаем после "ПП-check" новую ПП и назовем "actions". Вставляем туда код
Code
TimerStop "Timer1"
If "[vibor]" "=" "3"
Run "[openFiles]" "" "RunOnce+LoadComplete" "" ""
EndIf
команда "Run" отвечает за запуск внешнего Windows-приложения, после выполнения команды останавливаем таймер и очищаем переменные. Можно проверить таймер, запускаем в тестовом режиме и проверяем... Ура, у нас получилось! Теперь сделаем удобные фичи, чтоб Пользователь постоянно не подгонял по текущему времени, мы облегчим и создадим кнопку, которая и будет это делать. И так кнопку в студию назовем ее...так и назовем "выставить по текущему времени" в "LeftClick" пишем код
Code
SetVar "[H]" "[Hour]"
SetVar "[M]" "[Minute]"
SetVar "[S]" "[Second]"
вы уже знакомы с "ВГП", в этом коде мы свои переменые заполняем "ВГП". Неплохо бы в нашей программе показывать текущее системное время, создаем объект "Text" и вставляем такой текст "Текущее время: [Time24]". Эта переменная "Time24" тоже "ВГП". Поместить это объект можете в любом месте области "Безымянное", я поместил его с права


Добавлено (24 Август 2009, 12:10)
---------------------------------------------
Ну что ж, основное дело сделано, теперь доделаем скрипт для действий "Выключить ПК" и "Перезагрузить ПК". Открываем "ПП" и в "ПП-actions" добавляем код, Кстати для того чтоб выключить или перезагрузить ПК в НБ нет команд, но мы воспользуемся средствами самой Windows, тут есть инфа предоставленная Омаром список команд
Code
...................[1]выключить компьютер
If "[vibor]" "=" "1"
.Run "shutdown.exe" "-s -f -t 00" "Hidden" "" ""
EndIf
....................[2]перезагрузить компьютер
If "[vibor]" "=" "2"
.Run "shutdown.exe" "-r -f -t 00" "Hidden" "" ""
EndIf
....................[4]Включить/Отключить интернет
If "[vibor]" "=" "4"
      ..пока так подготовим оператор
EndIf
команду "Run" я закомментировал от случайного нажатия при тесте. перед сборкой "Таймера" не забудьте снять коменты.
Далее мы заполним область "Итог" Вы можете назвать это поле по другому. По сути это информационная область выбранных действий пользователя. Создаем два объекта "Text" в одном пишем "Действие: - [actions]" в другом "Время исполнения: - [H]ч. [M]мин." [S]сек. Размещаем в области "Итог". Теперь, когда пользователь выбрал время и действие, то информация отобразится в этой области.
Теперь перейдем к области "Дополнительно". Для чего же она нужна?! Для нужных на мой взгяд опций. Например, Пользователь частенько использует таймер для определенной задачи, и чтоб ему постоянно не забивать одно и тоже мы сделаем память, можно еще дополнительно добавить функцию Выход из приложения после исполнения задачи, еще напоминалку. И так кидаем на поле в область "Дополнительно" 3 объекта "CheckBox" и зададим Название = Переменная 1)"Запомнить" = [saved]
2)"Предупредить за:" = [napomnit]
3)"Закрыть" = [exit]
к "Предупредить за:" необходимо добавить объект "ComboBox"(список) с переменной [napomnMIN], в список пунктов надо написать цифры "1,2,3,4,5..." они будут означать за которое время предупредить о выполнение задания
теперь переходим в ПП и создаем новую ПП с именем "saveParam" и прежде чем там кодировать надо определится, что нам понадобится сохранять. Первое это время, 2-это действие, 3-напоминалка так и запишем код:
Code
If "[saved]" "=" "Checked"
      SetVar "[zapisParam]" "H=[H][#13]M=[M][#13]S=[S][#13]"
      SetVar "[zapisParam]" "[zapisParam]vibor=[vibor][#13]actions=[actions][#13]"
      SetVar "[zapisParam]" "[zapisParam]saved=Checked[#13]napomnMIN=[napomnMIN][#13]"
      SetVar "[zapisParam]" "[zapisParam]napomnit=[napomnit][#13]exit=[exit][#13]"
      ..переменная подключения
      FileWrite "[PubDir]timer.ini" "All" "[zapisParam]"
else
      FileExists "[PubDir]timer.ini" "[ok]"
       If "[ok]" "=" "True"
        FileErase "[iniFL]"
        SetVar "[ok]" ""
       EndIf
EndIf
разберем код. Проверяем оператором "If" сделан ли выбор в CheckBox-Запомнить, если поставлена, то сохраняем. Прежде чем сохранить в файл, надо подготовить данные для записи за это будет отвечать переменная [zapisParam] запись каждой переменной для сохранения будет иметь такой вид "H=[H]" почему именно так, объясню позже. Команда "FileWrite(Записать данные в указанную строку внешнего файла.)" наш внешний файл - "[PubDir]timer.ini" где [PubDir](кстати, это ВГП) означает путь к папке, где размещается текущее приложение.
В итоге должно получиться в файле "timer.ini" следующая запись:
Quote
H=11
M=46
S=55
vibor=1
actions=выключить компьютер
saved=Checked
napomnMIN=4
napomnit=Checked
exit=Checkeds

Если выбор в CheckBox-Запомнить не сделан или отменили, то выполняем код находящийся за "else" то есть проверяем на наличие файла "timer.ini" командой "FileExists(Проверить наличие (существование) внешнего или вложенного файла.
)" если он есть, то удаляем командой "FileErase(Удалить внешний файл)". Запустить эту ПП я решил из "ПП-check" записать надо команду (GoSub "saveParam") после команды (TimerStart "Timer1" "1000"). В конце этого урока я приведу полный код ПП. Теперь нам надо загрузить эти данные для этого мы создаем новую ПП и даем имя "loadParam"
пишем туда код
Code
FileExists "[PubDir]timer.ini" "[ok]"
      If "[ok]" "=" "True"
       LoadVariables "[PubDir]timer.ini"
       SetVar "[ok]" ""
      EndIf
Return
новая команда "LoadVariables(Загрузить переменные из файла.)" Чтобы запустить эту ПП перейдем на вкладку "(F6-->Actions(Команды)-->StartUp)" и добавим запись
Code
GoSub "loadParam"
. Т.е. при загрузке приложения выполнится "ПП-loadParam" Ну вот теперь наша программа имеет память :) Из истории, в первом проекте я реализовывал память без команды "LoadVariables", т.е. вот таким способом
Quote
.проверяем файл настроек, если файл имеется, то считываем параметры
FileExists "[PubDir]timer.ini" "[iniParam]"
If "[iniParam]" "=" "True"
FileRead "[PubDir]timer.ini" "All" "[dat]"
StrParse "[dat]" "[#13]" "[dat]" "[l]"
.... и записываем в массив
EndIf
SetVar "[H]" "[dat1]"
SetVar "[M]" "[dat2]"
SetVar "[S]" "[dat3]"
SetVar "[vibor]" "[dat4]"
SetVar "[actions]" "[dat5]"
SetVar "[saved]" "[dat7]"
SetVar "[napomnMIN]" "[dat8]"
SetVar "[napomnit]" "[dat9]"
SetVar "[exit]" "[dat10]"
.
DeleteArray "[dat]" "All"
:) вот такой раздутый код, согласитесь не очень удобно и много недостатков.

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:10
СергейДата: Пн, 24 Августа 2009, 12:12 | Сообщение # 3
Необукер
часть 3

теперь будем делать напоминалку создаем "ПП-napominalka" и помещаем в него код
Code
If "[napomnit]" "=" "Checked"
       SetVar "[vremFORpam]" "[M]"
      If "[vremFORpam]" "<" "[napomnMIN]"
       SetVar "[vremFORpam]" "[vremFORpam]+60"
      EndIf
       Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"
EndIf
разбор кода, в переменную "vremFORpam" заносим время таймера "М", суть в том, что надо рассчитать время если время напоминания например 4мин. а время по таймеру, например 1мин, чтоб не было ошибок при вычитании(Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"). Если у кого есть варианты, можете запостить в теме :)
а запускать мы этот ПП будем из "ПП-check" в блоке оператора (If "[otvet]" "=" "1"), в этом блоке должны быть следующие команды
Code
If "[otvet]" "=" "1"
        GoSub "napominalka"
        TimerStart "Timer1" "1000"
        GoSub "saveParam"
EndIf
Добавим еще код в наш объект "Timer (таймер)"
Code
IfEx "[H]=[Hour] AND [napomZaMIN]=[Minute] AND [S]=[Second]"
AlertBox "Напоминание" "До исполнения задачи осталось [napomnMIN] мин."
EndIf
этот код и будит отсчитывать время до напоминания
Осталось сделать "Закрыть"(Выход из приложения после исполнения задачи) тут все просто в "ПП-actions" перед строчкой "Return" ставим следующий код
Code
If "[exit]" "=" "Checked"
.Exit "" ""
Else
и последнее создадим ПП для кнопки "Очистить" создаем новую "ПП-clearParam" ставим код
Code
ClearVariables "[vibor],[actions],[openFiles],[napomZaMIN],[napomnit],[H],[M],[S],[exit],[saved]"
SetVar "[napomnMIN]" "0"
а в кнопке "Очистить" в Команде - "LeftClick" пишем строчку кода
Code
GoSub "clearParam"
. Еще реализовал запрет на закрытие программы, т.е. при закрытие программы, она сворачивается в трей. Наши действия "F6-->Actions(Команды)-->вкладка ShutDown(Выход)" пишем следующий код:
Code
If "[ShutdownSource]" "=" "CloseButton"
       SetVar "[ShutdownStatus]" "False"
       SetVar "[WindowState]" "Minimized"
EndIf
и добавляем пункт меню в трее "F6-->Tray Menu" пункт назовем "Выход" с командой
Code
Exit "" ""

Вот что должно получиться

На этом первая часть урока закончена, В этом уроке я попытался реализовать все Необушными средствами, не подключая плагины, но для подключения/отключения интернета необходим плагин. Вы должны скачать, установить и по изучать плагин сделанный одним хорошим человеком - нашим администратором Peter-ом! За что скажем ему СПАСИБО! Кому не понравился такой поворот с подключением/отключением интернета, то можете удалить из проекта эту радиокнопку.

----------------------полный код подпрограмм---------------------------
Code
.LOADPARAM
:loadParam
FileExists "[PubDir]timer.ini" "[ok]"
      If "[ok]" "=" "True"
       LoadVariables "[PubDir]timer.ini"
       SetVar "[ok]" ""
      EndIf
Return
.CHECK
:check
. проверяем на пустоту данных, если из блока все пустые то выдаем ошибку
      SetVar "[cheks]" "True"
.переменная для слежения правильности заполнения поле, можно и не создавать
.Для проверки 3 полей используем оператор логических выражений IfEx
IfEx "[H]=[#34][#34] OR [M]=[#34][#34] OR [S]=[#34][#34]"
      AlertBox "Ошибка!" "Вы не выбрали время"
      SetVar "[cheks]" "False"
EndIf
IfEx "[vibor]=[#34][#34] or [vibor]=0"
      AlertBox "Ошибка!" "Вы не выбрали действие"
       SetVar "[cheks]" "False"
EndIf
...
.проверим переменную [cheks] на True\False, если False, то ничего не делаем
If "[cheks]" "=" "False"
       SetVar "[cheks]" ""
      Else
.выводим мессагу, что все готовo для старта
      MessageBox "Таймер" "Ваш выбор следующий: ||                   Действие: [actions]|Время исполнения: [H]ч. [M]мин. [S]сек.|| Подтверждаете назначенное действие?!" "Да|Нет" "[otvet]"
       If "[otvet]" "=" "1"
        GoSub "napominalka"
        TimerStart "Timer1" "1000"
        GoSub "saveParam"
       EndIf
EndIf
Return
.ACTIONS
:actions
TimerStop "Timer1"
...................[1] выключить компьютер
If "[vibor]" "=" "1"
.Run "shutdown.exe" "-s -f -t 00" "Hidden" "" ""
EndIf
....................[2]перезагрузить компьютер
If "[vibor]" "=" "2"
.Run "shutdown.exe" "-r -f -t 00" "Hidden" "" ""
EndIf
....................[3]
If "[vibor]" "=" "3"
Run "[openFiles]" "" "RunOnce+LoadComplete" "" ""
EndIf
....................[4]Включить/Отключить интернет
If "[vibor]" "=" "4"
.....
EndIf
      If "[exit]" "=" "Checked"
        Exit "" ""
      Else
       ClearVariables "[vibor],[actions],[openFiles]"
EndIf
Return
.SAVEPARAM
:saveParam
If "[saved]" "=" "Checked"
      SetVar "[zapisParam]" "H=[H][#13]M=[M][#13]S=[S][#13]"
      SetVar "[zapisParam]" "[zapisParam]vibor=[vibor][#13]actions=[actions][#13]"
      SetVar "[zapisParam]" "[zapisParam]saved=[saved][#13]napomnMIN=[napomnMIN][#13]"
      SetVar "[zapisParam]" "[zapisParam]napomnit=[napomnit][#13]exit=[exit][#13]"
.  If "[vibor]" "=" "4"
.
.   EndIf
      FileWrite "[PubDir]timer.ini" "All" "[zapisParam]"
      SetVar "[zapisParam]" ""
else
          FileExists "[PubDir]timer.ini" "[ok]"
            If "[ok]" "=" "True"
               FileErase "[iniFL]"
               SetVar "[ok]" ""
            EndIf
EndIf
Return
.NAPOMINALKA
:napominalka
If "[napomnit]" "=" "Checked"
       SetVar "[vremFORpam]" "[M]"
      If "[vremFORpam]" "<" "[napomnMIN]"
       SetVar "[vremFORpam]" "[vremFORpam]+60"
      EndIf
       Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"
EndIf
SetVar "[viewNapom]" "[H]ч. [napomZaMIN]мин. [S]сек."
Return
.CLEARPARAM
:clearParam
ClearVariables "[vibor],[actions],[openFiles],[napomZaMIN],[napomnit],[H],[M],[S],[exit],[saved]"
SetVar "[napomnMIN]" "0"
Return

Внимание! при копировании кода будьте внимательны!
Прикрепления: 8581501.jpg (61.0 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 21:07
 
Сообщение
часть 3

теперь будем делать напоминалку создаем "ПП-napominalka" и помещаем в него код
Code
If "[napomnit]" "=" "Checked"
       SetVar "[vremFORpam]" "[M]"
      If "[vremFORpam]" "<" "[napomnMIN]"
       SetVar "[vremFORpam]" "[vremFORpam]+60"
      EndIf
       Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"
EndIf
разбор кода, в переменную "vremFORpam" заносим время таймера "М", суть в том, что надо рассчитать время если время напоминания например 4мин. а время по таймеру, например 1мин, чтоб не было ошибок при вычитании(Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"). Если у кого есть варианты, можете запостить в теме :)
а запускать мы этот ПП будем из "ПП-check" в блоке оператора (If "[otvet]" "=" "1"), в этом блоке должны быть следующие команды
Code
If "[otvet]" "=" "1"
        GoSub "napominalka"
        TimerStart "Timer1" "1000"
        GoSub "saveParam"
EndIf
Добавим еще код в наш объект "Timer (таймер)"
Code
IfEx "[H]=[Hour] AND [napomZaMIN]=[Minute] AND [S]=[Second]"
AlertBox "Напоминание" "До исполнения задачи осталось [napomnMIN] мин."
EndIf
этот код и будит отсчитывать время до напоминания
Осталось сделать "Закрыть"(Выход из приложения после исполнения задачи) тут все просто в "ПП-actions" перед строчкой "Return" ставим следующий код
Code
If "[exit]" "=" "Checked"
.Exit "" ""
Else
и последнее создадим ПП для кнопки "Очистить" создаем новую "ПП-clearParam" ставим код
Code
ClearVariables "[vibor],[actions],[openFiles],[napomZaMIN],[napomnit],[H],[M],[S],[exit],[saved]"
SetVar "[napomnMIN]" "0"
а в кнопке "Очистить" в Команде - "LeftClick" пишем строчку кода
Code
GoSub "clearParam"
. Еще реализовал запрет на закрытие программы, т.е. при закрытие программы, она сворачивается в трей. Наши действия "F6-->Actions(Команды)-->вкладка ShutDown(Выход)" пишем следующий код:
Code
If "[ShutdownSource]" "=" "CloseButton"
       SetVar "[ShutdownStatus]" "False"
       SetVar "[WindowState]" "Minimized"
EndIf
и добавляем пункт меню в трее "F6-->Tray Menu" пункт назовем "Выход" с командой
Code
Exit "" ""

Вот что должно получиться

На этом первая часть урока закончена, В этом уроке я попытался реализовать все Необушными средствами, не подключая плагины, но для подключения/отключения интернета необходим плагин. Вы должны скачать, установить и по изучать плагин сделанный одним хорошим человеком - нашим администратором Peter-ом! За что скажем ему СПАСИБО! Кому не понравился такой поворот с подключением/отключением интернета, то можете удалить из проекта эту радиокнопку.

----------------------полный код подпрограмм---------------------------
Code
.LOADPARAM
:loadParam
FileExists "[PubDir]timer.ini" "[ok]"
      If "[ok]" "=" "True"
       LoadVariables "[PubDir]timer.ini"
       SetVar "[ok]" ""
      EndIf
Return
.CHECK
:check
. проверяем на пустоту данных, если из блока все пустые то выдаем ошибку
      SetVar "[cheks]" "True"
.переменная для слежения правильности заполнения поле, можно и не создавать
.Для проверки 3 полей используем оператор логических выражений IfEx
IfEx "[H]=[#34][#34] OR [M]=[#34][#34] OR [S]=[#34][#34]"
      AlertBox "Ошибка!" "Вы не выбрали время"
      SetVar "[cheks]" "False"
EndIf
IfEx "[vibor]=[#34][#34] or [vibor]=0"
      AlertBox "Ошибка!" "Вы не выбрали действие"
       SetVar "[cheks]" "False"
EndIf
...
.проверим переменную [cheks] на True\False, если False, то ничего не делаем
If "[cheks]" "=" "False"
       SetVar "[cheks]" ""
      Else
.выводим мессагу, что все готовo для старта
      MessageBox "Таймер" "Ваш выбор следующий: ||                   Действие: [actions]|Время исполнения: [H]ч. [M]мин. [S]сек.|| Подтверждаете назначенное действие?!" "Да|Нет" "[otvet]"
       If "[otvet]" "=" "1"
        GoSub "napominalka"
        TimerStart "Timer1" "1000"
        GoSub "saveParam"
       EndIf
EndIf
Return
.ACTIONS
:actions
TimerStop "Timer1"
...................[1] выключить компьютер
If "[vibor]" "=" "1"
.Run "shutdown.exe" "-s -f -t 00" "Hidden" "" ""
EndIf
....................[2]перезагрузить компьютер
If "[vibor]" "=" "2"
.Run "shutdown.exe" "-r -f -t 00" "Hidden" "" ""
EndIf
....................[3]
If "[vibor]" "=" "3"
Run "[openFiles]" "" "RunOnce+LoadComplete" "" ""
EndIf
....................[4]Включить/Отключить интернет
If "[vibor]" "=" "4"
.....
EndIf
      If "[exit]" "=" "Checked"
        Exit "" ""
      Else
       ClearVariables "[vibor],[actions],[openFiles]"
EndIf
Return
.SAVEPARAM
:saveParam
If "[saved]" "=" "Checked"
      SetVar "[zapisParam]" "H=[H][#13]M=[M][#13]S=[S][#13]"
      SetVar "[zapisParam]" "[zapisParam]vibor=[vibor][#13]actions=[actions][#13]"
      SetVar "[zapisParam]" "[zapisParam]saved=[saved][#13]napomnMIN=[napomnMIN][#13]"
      SetVar "[zapisParam]" "[zapisParam]napomnit=[napomnit][#13]exit=[exit][#13]"
.  If "[vibor]" "=" "4"
.
.   EndIf
      FileWrite "[PubDir]timer.ini" "All" "[zapisParam]"
      SetVar "[zapisParam]" ""
else
          FileExists "[PubDir]timer.ini" "[ok]"
            If "[ok]" "=" "True"
               FileErase "[iniFL]"
               SetVar "[ok]" ""
            EndIf
EndIf
Return
.NAPOMINALKA
:napominalka
If "[napomnit]" "=" "Checked"
       SetVar "[vremFORpam]" "[M]"
      If "[vremFORpam]" "<" "[napomnMIN]"
       SetVar "[vremFORpam]" "[vremFORpam]+60"
      EndIf
       Math "[vremFORpam]-[napomnMIN]" "0" "[napomZaMIN]"
EndIf
SetVar "[viewNapom]" "[H]ч. [napomZaMIN]мин. [S]сек."
Return
.CLEARPARAM
:clearParam
ClearVariables "[vibor],[actions],[openFiles],[napomZaMIN],[napomnit],[H],[M],[S],[exit],[saved]"
SetVar "[napomnMIN]" "0"
Return

Внимание! при копировании кода будьте внимательны!

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:12
СергейДата: Пн, 24 Августа 2009, 12:13 | Сообщение # 4
Необукер
часть 4

По просьбе читателей, привожу пример создания уведомления (типа боллона), которое будет появляться в области трея.
Начнем оформлять окно уведомления
Создаем объект "Container(контейнер)" используется главным образом в качестве подложки для других объектов. На вроде "коробки" куда можно складывать другие объекты. Задаем Контейнеру имя, например messTray у меня размер Контейнера 234х105.
Помещаем в него объекты: Текст(2шт.) и Кнопку.
В первом объекте "Текст" пишем название диалогового окна, я написал следующее:
Code
[PubTitle]

Во втором "Тексте" пишем, что должно информировать
Code
До исполнения задачи
осталось [napomnMIN] мин

В "Кнопке" заголовок "х" и помещаем код
Code
CloseCustomWindow "messTray"
, т.е. означает закрыть окно, открытое командой CustomWindow. Если что-то не понятно в оформлении, посмотрите по рис. или в исходнике
Теперь еще создаем объект "Таймер", как описано выше задаем имя ему "stopMessTray" и в "Timer Properties(Свойств объекта)-->Actions(Комнда)-->Timer Interval" пишем код
Code
CloseCustomWindow "messTray"
? он такой же, как и в кнопке

Открываем редактор "ПП" и создаем новую ПП messTray с кодом
Code
Math "[ScreenWidth]-[WindowLeft]-234" "" "[treyWinX]"
Math "[ScreenHeight]-[WindowTop]-164" "" "[treyWinY]"
CustomWindow "" "[treyWinX]" "[treyWinY]" "messTray" "NoBorder"
TimerStart "stopMessTray" "4000"
Командами "Math" мы вычисляем координаты, где будет располагаться окно
ScreenWidth\ScreenHeight-это ВГП и означает ширину\высоту всего экрана Windows в пикселях.
WindowLeft\WindowTop-это ВГП и означает координаты X\Y левого-верхнего угла окна приложения
Цифры 234\164-это ширина\высота нашего окна уведомлений(234х105) плюс к высоте добавил высоту панели, иначе сообщение закроет панель. В место цифр можете использовать команду "GetObjectInfo" с заданным соответственно Width и Height этого окна, но не забудьте прибавить высоту панели
Команда "TimerStart" запускает Таймер, где прописано скрыть напоминалку, я выставил 4 сек.
Теперь, чтоб это заработало, открываем наш первый таймер "Timer1" и удаляем строчку кода (AlertBox "Напоминание" "До ис...) в место нее пишем
Code
GoSub "messTray"

вот что должно, примерно, получится


Не смог залить полностью только кусками :)
Не могу даже выделить пару строчек, пишет "Превышен лимит" :(
если найдете, какую-нибудь неточность или несоответствие, напишите и укажите номер сообщения
часть 5

исходник простого таймера (prostoTimer.rar)
Прикрепления: timer.rar (54.6 Kb) · 7773498.jpg (38.7 Kb) · 2199202.jpg (94.6 Kb) · prostoTimer.rar (3.9 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 21:15
 
Сообщение
часть 4

По просьбе читателей, привожу пример создания уведомления (типа боллона), которое будет появляться в области трея.
Начнем оформлять окно уведомления
Создаем объект "Container(контейнер)" используется главным образом в качестве подложки для других объектов. На вроде "коробки" куда можно складывать другие объекты. Задаем Контейнеру имя, например messTray у меня размер Контейнера 234х105.
Помещаем в него объекты: Текст(2шт.) и Кнопку.
В первом объекте "Текст" пишем название диалогового окна, я написал следующее:
Code
[PubTitle]

Во втором "Тексте" пишем, что должно информировать
Code
До исполнения задачи
осталось [napomnMIN] мин

В "Кнопке" заголовок "х" и помещаем код
Code
CloseCustomWindow "messTray"
, т.е. означает закрыть окно, открытое командой CustomWindow. Если что-то не понятно в оформлении, посмотрите по рис. или в исходнике
Теперь еще создаем объект "Таймер", как описано выше задаем имя ему "stopMessTray" и в "Timer Properties(Свойств объекта)-->Actions(Комнда)-->Timer Interval" пишем код
Code
CloseCustomWindow "messTray"
? он такой же, как и в кнопке

Открываем редактор "ПП" и создаем новую ПП messTray с кодом
Code
Math "[ScreenWidth]-[WindowLeft]-234" "" "[treyWinX]"
Math "[ScreenHeight]-[WindowTop]-164" "" "[treyWinY]"
CustomWindow "" "[treyWinX]" "[treyWinY]" "messTray" "NoBorder"
TimerStart "stopMessTray" "4000"
Командами "Math" мы вычисляем координаты, где будет располагаться окно
ScreenWidth\ScreenHeight-это ВГП и означает ширину\высоту всего экрана Windows в пикселях.
WindowLeft\WindowTop-это ВГП и означает координаты X\Y левого-верхнего угла окна приложения
Цифры 234\164-это ширина\высота нашего окна уведомлений(234х105) плюс к высоте добавил высоту панели, иначе сообщение закроет панель. В место цифр можете использовать команду "GetObjectInfo" с заданным соответственно Width и Height этого окна, но не забудьте прибавить высоту панели
Команда "TimerStart" запускает Таймер, где прописано скрыть напоминалку, я выставил 4 сек.
Теперь, чтоб это заработало, открываем наш первый таймер "Timer1" и удаляем строчку кода (AlertBox "Напоминание" "До ис...) в место нее пишем
Code
GoSub "messTray"

вот что должно, примерно, получится


Не смог залить полностью только кусками :)
Не могу даже выделить пару строчек, пишет "Превышен лимит" :(
если найдете, какую-нибудь неточность или несоответствие, напишите и укажите номер сообщения
часть 5

исходник простого таймера (prostoTimer.rar)

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:13
ВадимДата: Пн, 24 Августа 2009, 12:23 | Сообщение # 5
Генератор идей
Очень наглядно получилось, и детально!
И задумка для Урока выбрана полезная. Спасибо!!! :)
Тройное УРА, урокам по NB!!! thumbs_up


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
СообщениеОчень наглядно получилось, и детально!
И задумка для Урока выбрана полезная. Спасибо!!! :)
Тройное УРА, урокам по NB!!! thumbs_up

Автор - Вадим
Дата добавления - 24 Августа 2009 в 12:23
BodiДата: Пн, 24 Августа 2009, 12:24 | Сообщение # 6
Ветеран форума
Супер! Отлично получилось! sp3d, из тебя хороший учитель выйдет :)

Я как раз подобный таймер делаю, вот сразу по уроку и буду делать :D
Кстати, у меня по этому вопросу есть к тебе маленькая просьба, как к знатоку флеша. Надеюсь не откажешь ;)

 
СообщениеСупер! Отлично получилось! sp3d, из тебя хороший учитель выйдет :)

Я как раз подобный таймер делаю, вот сразу по уроку и буду делать :D
Кстати, у меня по этому вопросу есть к тебе маленькая просьба, как к знатоку флеша. Надеюсь не откажешь ;)


Автор - Bodi
Дата добавления - 24 Августа 2009 в 12:24
СергейДата: Пн, 24 Августа 2009, 12:29 | Сообщение # 7
Необукер
Всем, Спасибо!
Quote (Bodi)
Кстати, у меня по этому вопросу есть к тебе маленькая просьба, как к знатоку флеша. Надеюсь не откажешь
конечно вечером я буду сейчас ухожу, только не пости тут вопрос

Добавлено (24 Август 2009, 12:29)
---------------------------------------------

Quote (Bodi)
Я как раз подобный таймер делаю, вот сразу по уроку и буду делать
я помню, но так и не дождался твоего :D


Сообщение отредактировано
sp3d - Пн, 24 Августа 2009, 12:30
 
СообщениеВсем, Спасибо!
Quote (Bodi)
Кстати, у меня по этому вопросу есть к тебе маленькая просьба, как к знатоку флеша. Надеюсь не откажешь
конечно вечером я буду сейчас ухожу, только не пости тут вопрос

Добавлено (24 Август 2009, 12:29)
---------------------------------------------

Quote (Bodi)
Я как раз подобный таймер делаю, вот сразу по уроку и буду делать
я помню, но так и не дождался твоего :D

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:29
BodiДата: Пн, 24 Августа 2009, 12:33 | Сообщение # 8
Ветеран форума
Quote (sp3d)
конечно, только не пости тут вопрос

Ладно, я просто хотел убедится что ты согласишься :)
Пока еще не все готово, я сообщу в ЛС когда мне понадобится твоя помощь ;)

PS. надо тоже попробовать урок сочинить, все таки уроки гораздо полезней просто проектов. Вот только на какую тему незнаю...

 
Сообщение
Quote (sp3d)
конечно, только не пости тут вопрос

Ладно, я просто хотел убедится что ты согласишься :)
Пока еще не все готово, я сообщу в ЛС когда мне понадобится твоя помощь ;)

PS. надо тоже попробовать урок сочинить, все таки уроки гораздо полезней просто проектов. Вот только на какую тему незнаю...


Автор - Bodi
Дата добавления - 24 Августа 2009 в 12:33
DEMBELДата: Пн, 24 Августа 2009, 12:42 | Сообщение # 9
Наш дизайнер
sp3d, ну ты и выдал! Респект!
мож скринов добавить еще парочку чтоб еще нагляднее было


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировано
DEMBEL - Пн, 24 Августа 2009, 12:43
 
Сообщениеsp3d, ну ты и выдал! Респект!
мож скринов добавить еще парочку чтоб еще нагляднее было

Автор - DEMBEL
Дата добавления - 24 Августа 2009 в 12:42
СергейДата: Пн, 24 Августа 2009, 12:58 | Сообщение # 10
Необукер
Quote (DEMBEL)
мож скринов добавить еще парочку чтоб еще нагляднее было

да какой там, я просто слово добовляю и мне пишет Превышен лимит, пришлось скрины оставить ключевые, а остальные убрать
Получилось, что получилось :)


Сообщение отредактировано
sp3d - Пн, 24 Августа 2009, 13:00
 
Сообщение
Quote (DEMBEL)
мож скринов добавить еще парочку чтоб еще нагляднее было

да какой там, я просто слово добовляю и мне пишет Превышен лимит, пришлось скрины оставить ключевые, а остальные убрать
Получилось, что получилось :)

Автор - Сергей
Дата добавления - 24 Августа 2009 в 12:58
DEMBELДата: Пн, 24 Августа 2009, 13:01 | Сообщение # 11
Наш дизайнер
ну ты скрины не выбрасывай пока их потом вставят

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениену ты скрины не выбрасывай пока их потом вставят

Автор - DEMBEL
Дата добавления - 24 Августа 2009 в 13:01
СергейДата: Пн, 24 Августа 2009, 13:19 | Сообщение # 12
Необукер
Quote (DEMBEL)
ну ты скрины не выбрасывай пока их потом вставят
:D поздно, я так растроился, что снес и рисунки и текстовики, я как это-эмоцианален.
Правда через минуту пожалел о сделаном. Но недолго еще наскринить, только вечером, я через 15 минут уйду
 
Сообщение
Quote (DEMBEL)
ну ты скрины не выбрасывай пока их потом вставят
:D поздно, я так растроился, что снес и рисунки и текстовики, я как это-эмоцианален.
Правда через минуту пожалел о сделаном. Но недолго еще наскринить, только вечером, я через 15 минут уйду

Автор - Сергей
Дата добавления - 24 Августа 2009 в 13:19
DEMBELДата: Пн, 24 Августа 2009, 13:32 | Сообщение # 13
Наш дизайнер
В след. раз прилагайте архив с полным уроком в каком-либо формате, да и все...

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
СообщениеВ след. раз прилагайте архив с полным уроком в каком-либо формате, да и все...

Автор - DEMBEL
Дата добавления - 24 Августа 2009 в 13:32
СергейДата: Пн, 24 Августа 2009, 17:50 | Сообщение # 14
Необукер
Quote (DEMBEL)
В след. раз прилагайте архив с полным уроком в каком-либо формате, да и все...
это у меня есть в планах, чуть позже сделаю в *.mht формате

Добавлено (24 Август 2009, 17:48)
---------------------------------------------
передумал делать офлайн урок, это получается готовый урок для других ресурсов, перебьются :D

Добавлено (24 Август 2009, 17:50)
---------------------------------------------
а если и делать, то надо придумать пароль на архив, чтоб левые или залетные не знали, а свои знали

 
Сообщение
Quote (DEMBEL)
В след. раз прилагайте архив с полным уроком в каком-либо формате, да и все...
это у меня есть в планах, чуть позже сделаю в *.mht формате

Добавлено (24 Август 2009, 17:48)
---------------------------------------------
передумал делать офлайн урок, это получается готовый урок для других ресурсов, перебьются :D

Добавлено (24 Август 2009, 17:50)
---------------------------------------------
а если и делать, то надо придумать пароль на архив, чтоб левые или залетные не знали, а свои знали


Автор - Сергей
Дата добавления - 24 Августа 2009 в 17:50
mishemДата: Пн, 24 Августа 2009, 19:28 | Сообщение # 15
Эксперт форума
sp3d, Молодец, хорошая затея.

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщениеsp3d, Молодец, хорошая затея.

Автор - mishem
Дата добавления - 24 Августа 2009 в 19:28
СергейДата: Пн, 24 Августа 2009, 19:40 | Сообщение # 16
Необукер
Quote (mishem)
sp3d, Молодец, хорошая затея.
все для вас хороших! Спасибо! :)
 
Сообщение
Quote (mishem)
sp3d, Молодец, хорошая затея.
все для вас хороших! Спасибо! :)

Автор - Сергей
Дата добавления - 24 Августа 2009 в 19:40
lorentsДата: Пн, 24 Августа 2009, 19:44 | Сообщение # 17
Вот это урок thumbs_up
 
СообщениеВот это урок thumbs_up

Автор - lorents
Дата добавления - 24 Августа 2009 в 19:44
СергейДата: Пн, 24 Августа 2009, 23:40 | Сообщение # 18
Необукер
Quote (Bodi)
Вот только на какую тему незнаю...
тоже незнал, но подтолкнуло на это тема Омара, ну я решил выбрать таймер, если время будет сделаю еще 2 урока


Сообщение отредактировано
sp3d - Пн, 24 Августа 2009, 23:40
 
Сообщение
Quote (Bodi)
Вот только на какую тему незнаю...
тоже незнал, но подтолкнуло на это тема Омара, ну я решил выбрать таймер, если время будет сделаю еще 2 урока

Автор - Сергей
Дата добавления - 24 Августа 2009 в 23:40
ВадимДата: Вт, 25 Августа 2009, 07:45 | Сообщение # 19
Генератор идей
Quote (Bodi)
Вот только на какую тему незнаю...

Quote (sp3d)
тоже незнал,

Ура энтузиазму необукеров!
В порядке предложения... Уроки можно делать разными - по типу предмета изучения (того, что именно в центре внимания урока). И не смотря на то, что все типы уроков взаимосвязаны, все же это не одно и тоже.
Я имею ввиду пока четыре типа (их может быть и больше, если идея понравится - предлагайте):
1) Задача. Предмет такого урока - научиться делать то-то, решать такие-то задачи или задачу. Итог такого урока: создание некоторого проекта, демонстрирующего те или иные возможности NB, овладение этими приемами и конкретными решениями.
2) Команды. Предмет такого урока - конкретная команда (или группа команд), ее максимально полное описание с примерами кода (включая взаимодействие с Операторами и Переменными). Лично мне больше всего не хватает именно нормального описания синтаксиса команд и примеров их использования, с описанием типичных задач - для чего и как чаще всего применяются, с описанием тонкостей и нюансов, с описанием типичных ошибок использования данных команд, с описанием нетипичного использования. То, что есть в справке NB больше похоже на сжатый конспект-шпаргалку, для специалиста-программера, а, по идее, наоборот справка для NB должна быть рассчитана на человека, который не умеет кодить, но хочет этому научиться на языке NB. Итог такого урока: полноценная справка по определенной команде или группе команд.
3) Объекты. Предмет такого урока - конкретный объект (листбокс, статья, чекбокс и т.д.), его описание и примеры типичного применения, описание типичных ошибок его использования, советы по тому, как лихо можно данный объект использовать и пр. Примеры нестандартного, нетипичного, интересного применения - для демонстрации возможностей NB и логики программирования. Итог такого урока: исчерпывающая информация о возможностях объекта и принципах его применения.
4) Команды Плагинов. Тоже что и "Команды" (см. п.2), только о плагинах.

С точки зрения развития нового ресурса NB, я думаю, наиболее важно помочь овладеть самими инструментами работы (синтаксис NB и плагинов, русификации NB и плагинов). Тогда и примеры создания конкретных проектов (использование инструментов) будут народу значительно понятнее и в них можно будет делать отсылки к "общим" темам (вроде Команд).

В этом ключе у меня созрело еще такое конкретное предложение (уже за пределами темы Уроков, но взаимосвязано с ними):
Создать свою справку по NB! Причем она должна быть живой, динамично развивающейся, с системой обратной связи от тех, кто ею пользуется.
Назвать ее, чтобы не путаться, например, NB-РУКОВОДСТВО.
Взять за основу русифицированную справку и добавлять в нее наиболее удачные дополнения к описаниям команд, объектов и т.д. Создать дополнительный раздел - для плагинов, и там тоже будет опыт накапливаться (добавить и другие необходимые и желательные разделы). И пусть Руководство постоянно развивается по типу Wiki-энциклопедии.

Как это может выглядеть (для примера):
а) кто-то систематизировал кусок своих знаний по какой-то команде и выдал листочек (пол листочка) редакционной группе (редколлегии). Кстати, многие из тех, кого не хватило бы на полноценные Уроки, могли бы в этом жанре быть очень полезны (!), ведь написать какое-то дополнение в справку на пару абзацев совсем не сложно, а очень полезно (особенно, если эти два абзаца толково расшифровывают то, что описано в оригинале Справки и вовсе одним предложением...);
б) редколлегия (в состав которой войдут самые опытные необукеры) рассматривают этот листочек, делают необходимую редакторскую правку (согласовывая правки с автором "листочка", во избежание недопонимания с обеих сторон) и выносят один из трех вердиктов: включить в новую версию Руководства; включить в новую версию с доработками (отправить автору на доработку, с указанием слабых мест); не включать в Руководство (с указанием причин - почему нет).
в) при положительном решении редколлегия вносит новый кусочек знаний в Руководство и выставляет новую версию на сайте для скачивания, а имя автора (и/или его Ник) заносится в общий список участников, внесших свой вклад в развитие Руководства - например на странице "О Руководстве".
г) народ качает новую версию и радуется :)

Дополнительно Руководство следует оснастить:
- гиперссылками на те или иные разделы и темы форума, где данная тема и понятия содержательно обсуждались и где можно почерпнуть нечто, что в Руководство не поместить, но что полезно (размышления, логика выработки решения и т.д.). Таким образом Руководство может выступить в роли постоянно саморазвивающегося координатора системы знаний;
- системой учета переходов по ссылкам из Руководства и на Руководство (чтобы редколлегия видела самые востребованные разделы и могла рекомендовать опытным участникам форума разработать дополнения к таким-то разделам Руководства);
- системой "запроса информации" (в самом Руководстве предусмотреть форму отправки сообщений на сайт форума - мол, "в таком-то разделе не совсем понятно то-то можно эту тему развить?") - смысл тот же - давать редколлегии обратную связь о полезности и применимости тех или иных разделов Руководства;
- системой гиперссылок на различные полезные ресурсы в Интернет (помнится, Sp3d, уже предлагал такую идею!);
- необязательно, но можно предусмотреть также и систему оценки любой темы (раздела) чтобы одним кликом народ мог оценить полноту/понятность/полезность того или иного раздела Руководства (это тоже позволит подтягивать разделы, которые в оценках уступают). Что-то вроде системы рейтингов, только вместо звездочек можно использовать логотип NB :D (о! у темы целых пять NB-шек! :D )

По идее, формат CHM все это должен поддерживать, ну, с учетом работы скриптов на сайте, конечно (для фиксирования переходов и для работы формы отправки сообщений). А быстрый поиск в CHM сделает это Руководство просто незаменимым подспорьем в работе.

Как вам идея?


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)

Сообщение отредактировано
VadimLevkin - Вт, 25 Августа 2009, 07:52
 
Сообщение
Quote (Bodi)
Вот только на какую тему незнаю...

Quote (sp3d)
тоже незнал,

Ура энтузиазму необукеров!
В порядке предложения... Уроки можно делать разными - по типу предмета изучения (того, что именно в центре внимания урока). И не смотря на то, что все типы уроков взаимосвязаны, все же это не одно и тоже.
Я имею ввиду пока четыре типа (их может быть и больше, если идея понравится - предлагайте):
1) Задача. Предмет такого урока - научиться делать то-то, решать такие-то задачи или задачу. Итог такого урока: создание некоторого проекта, демонстрирующего те или иные возможности NB, овладение этими приемами и конкретными решениями.
2) Команды. Предмет такого урока - конкретная команда (или группа команд), ее максимально полное описание с примерами кода (включая взаимодействие с Операторами и Переменными). Лично мне больше всего не хватает именно нормального описания синтаксиса команд и примеров их использования, с описанием типичных задач - для чего и как чаще всего применяются, с описанием тонкостей и нюансов, с описанием типичных ошибок использования данных команд, с описанием нетипичного использования. То, что есть в справке NB больше похоже на сжатый конспект-шпаргалку, для специалиста-программера, а, по идее, наоборот справка для NB должна быть рассчитана на человека, который не умеет кодить, но хочет этому научиться на языке NB. Итог такого урока: полноценная справка по определенной команде или группе команд.
3) Объекты. Предмет такого урока - конкретный объект (листбокс, статья, чекбокс и т.д.), его описание и примеры типичного применения, описание типичных ошибок его использования, советы по тому, как лихо можно данный объект использовать и пр. Примеры нестандартного, нетипичного, интересного применения - для демонстрации возможностей NB и логики программирования. Итог такого урока: исчерпывающая информация о возможностях объекта и принципах его применения.
4) Команды Плагинов. Тоже что и "Команды" (см. п.2), только о плагинах.

С точки зрения развития нового ресурса NB, я думаю, наиболее важно помочь овладеть самими инструментами работы (синтаксис NB и плагинов, русификации NB и плагинов). Тогда и примеры создания конкретных проектов (использование инструментов) будут народу значительно понятнее и в них можно будет делать отсылки к "общим" темам (вроде Команд).

В этом ключе у меня созрело еще такое конкретное предложение (уже за пределами темы Уроков, но взаимосвязано с ними):
Создать свою справку по NB! Причем она должна быть живой, динамично развивающейся, с системой обратной связи от тех, кто ею пользуется.
Назвать ее, чтобы не путаться, например, NB-РУКОВОДСТВО.
Взять за основу русифицированную справку и добавлять в нее наиболее удачные дополнения к описаниям команд, объектов и т.д. Создать дополнительный раздел - для плагинов, и там тоже будет опыт накапливаться (добавить и другие необходимые и желательные разделы). И пусть Руководство постоянно развивается по типу Wiki-энциклопедии.

Как это может выглядеть (для примера):
а) кто-то систематизировал кусок своих знаний по какой-то команде и выдал листочек (пол листочка) редакционной группе (редколлегии). Кстати, многие из тех, кого не хватило бы на полноценные Уроки, могли бы в этом жанре быть очень полезны (!), ведь написать какое-то дополнение в справку на пару абзацев совсем не сложно, а очень полезно (особенно, если эти два абзаца толково расшифровывают то, что описано в оригинале Справки и вовсе одним предложением...);
б) редколлегия (в состав которой войдут самые опытные необукеры) рассматривают этот листочек, делают необходимую редакторскую правку (согласовывая правки с автором "листочка", во избежание недопонимания с обеих сторон) и выносят один из трех вердиктов: включить в новую версию Руководства; включить в новую версию с доработками (отправить автору на доработку, с указанием слабых мест); не включать в Руководство (с указанием причин - почему нет).
в) при положительном решении редколлегия вносит новый кусочек знаний в Руководство и выставляет новую версию на сайте для скачивания, а имя автора (и/или его Ник) заносится в общий список участников, внесших свой вклад в развитие Руководства - например на странице "О Руководстве".
г) народ качает новую версию и радуется :)

Дополнительно Руководство следует оснастить:
- гиперссылками на те или иные разделы и темы форума, где данная тема и понятия содержательно обсуждались и где можно почерпнуть нечто, что в Руководство не поместить, но что полезно (размышления, логика выработки решения и т.д.). Таким образом Руководство может выступить в роли постоянно саморазвивающегося координатора системы знаний;
- системой учета переходов по ссылкам из Руководства и на Руководство (чтобы редколлегия видела самые востребованные разделы и могла рекомендовать опытным участникам форума разработать дополнения к таким-то разделам Руководства);
- системой "запроса информации" (в самом Руководстве предусмотреть форму отправки сообщений на сайт форума - мол, "в таком-то разделе не совсем понятно то-то можно эту тему развить?") - смысл тот же - давать редколлегии обратную связь о полезности и применимости тех или иных разделов Руководства;
- системой гиперссылок на различные полезные ресурсы в Интернет (помнится, Sp3d, уже предлагал такую идею!);
- необязательно, но можно предусмотреть также и систему оценки любой темы (раздела) чтобы одним кликом народ мог оценить полноту/понятность/полезность того или иного раздела Руководства (это тоже позволит подтягивать разделы, которые в оценках уступают). Что-то вроде системы рейтингов, только вместо звездочек можно использовать логотип NB :D (о! у темы целых пять NB-шек! :D )

По идее, формат CHM все это должен поддерживать, ну, с учетом работы скриптов на сайте, конечно (для фиксирования переходов и для работы формы отправки сообщений). А быстрый поиск в CHM сделает это Руководство просто незаменимым подспорьем в работе.

Как вам идея?


Автор - Вадим
Дата добавления - 25 Августа 2009 в 07:45
DEMBELДата: Вт, 25 Августа 2009, 09:15 | Сообщение # 20
Наш дизайнер
Слышишь, Peter, тебе щас выдали систематику раздела "Neobook для начинающих" каталога статей...

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
СообщениеСлышишь, Peter, тебе щас выдали систематику раздела "Neobook для начинающих" каталога статей...

Автор - DEMBEL
Дата добавления - 25 Августа 2009 в 09:15
ВадимДата: Вт, 25 Августа 2009, 09:36 | Сообщение # 21
Генератор идей
:D Для каталога статей я подробнее могу придумать! А тут идея фактически в том, чтобы Справку по NB сделать по-настоящему эффективной.

Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение:D Для каталога статей я подробнее могу придумать! А тут идея фактически в том, чтобы Справку по NB сделать по-настоящему эффективной.

Автор - Вадим
Дата добавления - 25 Августа 2009 в 09:36
BodiДата: Вт, 25 Августа 2009, 13:05 | Сообщение # 22
Ветеран форума
Quote (VadimLevkin)
Ура энтузиазму необукеров! В порядке предложения...

Ура твоему энтузиазму Вадим :) И откуда он у тебя только берется :D
 
Сообщение
Quote (VadimLevkin)
Ура энтузиазму необукеров! В порядке предложения...

Ура твоему энтузиазму Вадим :) И откуда он у тебя только берется :D

Автор - Bodi
Дата добавления - 25 Августа 2009 в 13:05
RezzoxeДата: Вт, 25 Августа 2009, 13:34 | Сообщение # 23
Quote (sp3d)
но подтолкнуло на это тема Омара

если бы ты знал с каких времён я мучаю этот таймер, ещё на mmb :D

 
Сообщение
Quote (sp3d)
но подтолкнуло на это тема Омара

если бы ты знал с каких времён я мучаю этот таймер, ещё на mmb :D


Автор - Rezzoxe
Дата добавления - 25 Августа 2009 в 13:34
AlienДата: Ср, 26 Августа 2009, 11:09 | Сообщение # 24
Не плохо, а вот у меня вопрос, можно чтобы это уведомление из трея вылазило плавно?)
 
СообщениеНе плохо, а вот у меня вопрос, можно чтобы это уведомление из трея вылазило плавно?)

Автор - Alien
Дата добавления - 26 Августа 2009 в 11:09
СергейДата: Ср, 26 Августа 2009, 11:23 | Сообщение # 25
Необукер
Quote (Alien)
Не плохо, а вот у меня вопрос, можно чтобы это уведомление из трея вылазило плавно?)
конечно можно

Добавлено (26 Август 2009, 11:23)
---------------------------------------------
только не

Quote (Alien)
вылазило
, т.к. это и сам сделаешь при желании, а появление сообщения с помощью "CustomWindow", пример покажу, только незнаю тут ли постить или отдельно, многих ведь интересует вопрос
 
Сообщение
Quote (Alien)
Не плохо, а вот у меня вопрос, можно чтобы это уведомление из трея вылазило плавно?)
конечно можно

Добавлено (26 Август 2009, 11:23)
---------------------------------------------
только не

Quote (Alien)
вылазило
, т.к. это и сам сделаешь при желании, а появление сообщения с помощью "CustomWindow", пример покажу, только незнаю тут ли постить или отдельно, многих ведь интересует вопрос

Автор - Сергей
Дата добавления - 26 Августа 2009 в 11:23
AlienДата: Ср, 26 Августа 2009, 12:05 | Сообщение # 26
пости в новой теме ;)
 
Сообщениепости в новой теме ;)

Автор - Alien
Дата добавления - 26 Августа 2009 в 12:05
BodiДата: Ср, 26 Августа 2009, 12:28 | Сообщение # 27
Ветеран форума
Quote (Alien)
пости в новой теме

Да что там объяснять то? По моему это сделать не так сложно, как кажется. Я вам советую вначале самому попытатся сделать подобное уведомление, а потом, если вдруг не получится, просить помощи... ;)
 
Сообщение
Quote (Alien)
пости в новой теме

Да что там объяснять то? По моему это сделать не так сложно, как кажется. Я вам советую вначале самому попытатся сделать подобное уведомление, а потом, если вдруг не получится, просить помощи... ;)

Автор - Bodi
Дата добавления - 26 Августа 2009 в 12:28
СергейДата: Ср, 26 Августа 2009, 12:54 | Сообщение # 28
Необукер
Внимание! добавил в урок(пост 4) появление уведомления в области трея.
Потом когда будем на новом ресурсе, можно будет и создать новую тему...
***
Quote (Bodi)
Да что там объяснять то?
Bodi, ты уже родился програмером или...?!
Возможно человек и знает решение, но принцип работы не всегда виден, можно убить неделю и не найти, а он лежит на поверхности


Сообщение отредактировано
sp3d - Ср, 26 Августа 2009, 13:35
 
СообщениеВнимание! добавил в урок(пост 4) появление уведомления в области трея.
Потом когда будем на новом ресурсе, можно будет и создать новую тему...
***
Quote (Bodi)
Да что там объяснять то?
Bodi, ты уже родился програмером или...?!
Возможно человек и знает решение, но принцип работы не всегда виден, можно убить неделю и не найти, а он лежит на поверхности

Автор - Сергей
Дата добавления - 26 Августа 2009 в 12:54
BodiДата: Ср, 26 Августа 2009, 13:13 | Сообщение # 29
Ветеран форума
Quote (sp3d)
Bodi, ты уже родился програмером или...?!

:D
Да ладно тебе....
Просто не люблю, когда человек просит показать "как сделать", а сам даже не рискнул попробовать сделать своими силами.
 
Сообщение
Quote (sp3d)
Bodi, ты уже родился програмером или...?!

:D
Да ладно тебе....
Просто не люблю, когда человек просит показать "как сделать", а сам даже не рискнул попробовать сделать своими силами.

Автор - Bodi
Дата добавления - 26 Августа 2009 в 13:13
СергейДата: Ср, 26 Августа 2009, 13:17 | Сообщение # 30
Необукер
Quote (Bodi)
а сам даже не рискнул попробовать сделать своими силами.
Вы живете в одной квартире? :D
Bodi, посмотри мной созданные темы, я тоже прошу показать пример, и ...?!
 
Сообщение
Quote (Bodi)
а сам даже не рискнул попробовать сделать своими силами.
Вы живете в одной квартире? :D
Bodi, посмотри мной созданные темы, я тоже прошу показать пример, и ...?!

Автор - Сергей
Дата добавления - 26 Августа 2009 в 13:17
Форум NeoBook » Всё о программе NeoBook » Сценарии и скриптовые языки в Neobook » Урок по созданию таймера
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: