Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
а что скажу: нормально, каждый вариант имеет права жить Но только стоит уточнить, что это не одно и тоже, как заметил Peter, этот(22пост) отвечает за положения самого себя, а SetWindowPos за положение и размер другого запущеного приложения а вот с анимаце, не очень понравилась. Попиксельный выезд глаза режет
Сообщение отредактировано sp3d - Сб, 16 Мая 2009, 21:57
Но только стоит уточнить, что это не одно и тоже, как заметил Peter, этот(22пост) отвечает за положения самого себя, а SetWindowPos за положение и размер другого запущеного приложения
эммм ну правильно, мне вообще таки надо было изменить местоположение моего окна а не допустим косынки, вот Peter и подсказал о переменных, которые относятся к изменениям именно окна проекта.
Quote (sp3d)
а вот с анимаце, не очень понравилась. Попиксельный выезд глаза режет
Соглашусь, представьте юзер ждёт пока панель вылезет, чтобы нажать на кнопку!
Quote (Bodi)
А что есть другой способ "плавно" именить положение окна.
Есть! Просто мы не знаем!
Сообщение отредактировано Омар - Вс, 17 Мая 2009, 02:00
Вот программеры:)) часов 5 сижу пытаюсь переделать по примеру, подскажите где я просчитался? Пример тот же , только окно должно быть сверху экрана
Code
GetMousePos "[X]" "[Y]" IfEx "[X]<[PubWidth] and [X]>0 and [Y]<[PubHeight] and [Y]>0" Math "[ScreenHeight]-[ScreenHeight]-[PubHeight]""0" "[WindowTop]" .вычитаем высоту экрана - от самой же высоты экрана, . получается что приложение прижимается .к верхней точке экрана, . и вычитаем высоту окна приложения, Чтобы окно вообще спряталось
Math "([ScreenWidth]/2)-125" "0" "[WindowLeft]" .ширину экрана делим на два, вычитаем половину размера ширины проекта, . чтобы проект .центировался Else
Math "[ScreenHeight]-[ScreenHeight]-[PubHeight]+10" "0" "[WindowTop]" .высоту экрана вычитаем её же и вычитаем высоту проекта, . чтобы проект пропал и прибавляем 10 .пикселей, чтобы показывалась часть проекта EndIf
в итоге работает вроде, но при наведении мышки проект вместо показа , прячется
п.с., а это нормально что в отладчике постоянно "матрица"? и знак красный стоп, в некоторых строках?
Добавлено (03 Июнь 2011, 05:24) --------------------------------------------- Вроде получилось, методом тыка
правильно?
Code
GetMousePos "[X]" "[Y]" IfEx "[X]<[PubWidth] and [X]>0 and [Y]<[PubHeight] and [Y]>0" Math "0" "0" "[WindowTop]" .обнулили отступ проекта
Math "([ScreenWidth]/2)-125" "0" "[WindowLeft]"
Else
Math "-[PubHeight]+10" "0" "[WindowTop]" .чтобы проект исчез за пределы окна винды сверху, и показался на 10 пикселей EndIf
только почему-то если мышь на верхней границе окна винда держать, окно проекта то появляется то пропадает...
Сообщение отредактировано DoXeR - Пт, 03 Июня 2011, 05:31
DoXeR, не имея четкого описания поставленной задачи, сказать правильно или нет весьма затруднительно, если не невозможно.
Quote (DoXeR)
только почему-то если
Насколько я сумел понять, приведенный код работает по таймеру. Если так, то в момент срабатывания скрипта (окно перемещается) будет меняться и само условие, потому и происходит "зацикливание".
Quote (DoXeR)
Math "0" "0" "[WindowTop]" .обнулили отступ проекта
Несколько необычное "обнуление". Я бы сделал иначе: SetVar "[WindowTop]" "0" - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
DoXeR, не имея четкого описания поставленной задачи, сказать правильно или нет весьма затруднительно, если не невозможно.
ну задачи в точности такие же, как в этой темы, в примере от уважаемого Омара:
Quote (Dordex)
Я мягко говоря с каждым разом фигею с какой лёгкостью оказывается можно работать в NeoBook!!!
Немного повозившись и вспомнив математику второго класса crazy всё получилось так как я и хотел!
Собственно сам код в объекте таймер:
GetMousePos "[X]" "[Y]" IfEx "[X]<[PubWidth] and [X]>0 and [Y]<[PubHeight] and [Y]>0" Math "[ScreenWidth]-[PubWidth]" "0" "[WindowLeft]" Math "([ScreenHeight]/2)-300" "0" "[WindowTop]" Else Math "[ScreenWidth]-10" "0" "[WindowLeft]" EndIf
Разберём код:
1. Передаём позицию мыши по горизонтали и по вертикали в переменные [X] и [Y] 2. Тут условие, если курсор не находится в пределах окна нашего проекта, то 3. Выполняется мат. функция: от ширины экрана вычитаем ширину нашего окна, после чего передаём результат в переменную [WindowLeft], которая собственно и перемещает наше окно строго вправо до предела. 4. Здесь немного другая ситуация так как требовалось чтобы окно находилось строго по центру относительно высоты экрана, то тут вычисляем по следующей формуле: высоту экрана делим на 2, и после этого вычитаем половину размера от высоты нашего окна, (благодаря этому при любом разрешение проект будет находится строго по центру относительно высоты экрана) передаём результат в переменную [WindowTop]. 5. В противном случае (если курсор мыши в пределах окна проекта) 6. Выполняется мат. функция: от ширины экрана вычитается 10 пикселей, и передаётся в переменную [WindowLeft], благодаря которой мы можем наблюдать кусочек окна, это необходимо для повторного появления всей области окна путём наведения курсора мыши на этот "кусочек" 7. фсё!
write Прикрепления: Panel.pub(4Kb)
Только в примере окно проекта выдвигается справа, а у меня оно сверху..
Quote (Peter)
SetVar "[WindowTop]" "0"
спс, так тоже работает, но всё равно при наведении мышкой на самый верхний пиксель экрана и окошка приложения, окно проекта начинает то появляться, то исчезать
и в отладчике еще красный знак стоп на строке - SetVar "[WindowTop]" "0" это нормально?
Сообщение отредактировано DoXeR - Пт, 03 Июня 2011, 06:15
я бы реализовал так, баги будут, но явно не "прыгающие"
интересные вариант.. и всего в три строки.. только вот стоило туда , в вашем примере, на панель кнопок добавить, панель сама пропадать начала, хотя и мышка не отведена
только вот стоило туда , в вашем примере, на панель кнопок добавить
суть заключается в том, что событие(Mouse Enter) вешается на контейнер, но когда ты в контейнер(или по верх-неважно)помещаешь еще объект, то при Mouse Enter над этим новым объектом, фокус в контейнере теряется и отрабатывается событие(Mouse Exit)контейнера, и это логично, т.к. у нового объекта тоже есть событие Mouse Enter! Тут надо дополнить событие Mouse Exit дополнительными условиями. Я реализовывал с дополнительной проверкой позиции курсора в даной области. Т.е. если мыха находится над контейнером, но контейнер потерял фокус, то скрипт неотрабатывается.. см. пример
Добавлено (03 Июнь 2011, 11:51) --------------------------------------------- иногда будет не срабатывать, да прибудет с тобой сила таймера
Сергей, как-то он лагает Все гораздо проще, создаешь две подпрограммы, ShowPanel и HidePanel Потом пихаешь их в события Mouse Enter и Mouse Exit каждого объекта, правда я вместо контейнера использовал полигон, работает на ура.
иногда будет не срабатывать, да прибудет с тобой сила таймера
пример писал на сапоге, кто говорил о совершенстве?!
Quote (Alien)
Потом пихаешь их в события Mouse Enter и Mouse Exit каждого объекта
а если их много?! Можно еще сделать с плагом Петра, там есть вывод положения мышки над объектом. В любом случае надо причесывать проекты и примеры, доводить до "совершенства", а не копипастить и сразу компилить. И повторюсь
Quote (Сергей)
каждый вариант имеет права жить
вот пример с таймером и без лагов. Но есть один минус. Кликни по кнопке1 и выведи алерт за границу проекта но это мелочь, на которую можно не обращать внимание....
вот пример с таймером и без лагов. Но есть один минус. Кликни по кнопке1 и выведи алерт за границу проекта но это мелочь, на которую можно не обращать внимание....
а какой там минус? вроде всё норм.. Или то, что окно прячется, если алерт переместить?:) Вот только если окно нестандартной формы ( например сделать чтобы только крючок показывался ) по маске, то нб все равно его прямоугольным считает, и при наведении что на сам крючок, что и на любую часть невидимой формы, будет срабатывать:(
Сергей, как-то он лагает Все гораздо проще, создаешь две подпрограммы, ShowPanel и HidePanel Потом пихаешь их в события Mouse Enter и Mouse Exit каждого объекта, правда я вместо контейнера использовал полигон, работает на ура.
поясни, что имел ввиду под этими словами? вытягивать чтоли подробности.... Картинку фейса выложи! У меня с "крючком" работает!
ну , если форма проекта почти на весь экран, мы же не будем делать события на всю длину экрана.. вот например, как тут , правда это на ммб , но красиво сделано:) При приближении вообще шикарно появляется)) тут так не получится наверное)) Но в общем виден "крючОк" тут ( не беря в расчет, что не убирается при отведении мыши панелька )