Вверх ↑
Этот топик читают: Гость
Ответов: 875
Рейтинг: 322
#1: 2009-01-02 23:10:47 ЛС | профиль | цитата
Такая незадача. Кликнул мышкой на картинке, передвинул куда надо и отпустил клавишу. Должно произойти событие отпускания кнопки мышки. Но почему-то не работает. С точки onMouseMove, без сдвига, работает. Но после движения нужен второй щелчок. С точек onClick и onMouseDown только двойной щелчок. Вопрос: как отловить отпускание клавиши? code_11160.txt
карма: 1

0
файлы: 1code_11160.txt [536B] [266]
Разработчик
Ответов: 26151
Рейтинг: 2127
#2: 2009-01-02 23:47:55 ЛС | профиль | цитата
kamakama, ну, вот так, вроде, работает


Add(MainForm,13466610,343,140)
{
}
Add(Image,14310722,392,140)
{
Left=60
Top=55
Width=71
Height=96
Color=16776960
Cursor=2
Point(Handle)
Point(onMouseUp)
Point(onMouseDown)
Point(onMouseMove)
link(onMouseDown,5795459:doMove,[(436,160)(436,184)(387,184)(387,209)])
link(onMouseMove,3758812:doEvent,[])
}
Add(MoveWindow,5795459,399,203)
{
link(Handle,14310722:Handle,[])
}
Add(Label,9205895,581,161)
{
Left=315
Top=115
}
Add(Counter,2017450,511,161)
{
link(onNext,9205895:doText,[])
}
Add(IndexToChanel,3758812,448,161)
{
link(onEvent1,2017450:doNext,[])
}

карма: 22

0
Ответов: 875
Рейтинг: 322
#3: 2009-01-03 00:00:22 ЛС | профиль | цитата
nesco, действительно работает! Спасибо! И ещё одна просьба, если не трудно можно в двух словах объяснить как это работает. Просто хочется понять принцип а не тупо запомнить соединение элементов.
карма: 1

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#4: 2009-01-03 00:55:27 ЛС | профиль | цитата
kamakama писал(а):
Просто хочется понять принцип

Этот принцип мне самому не до конца понятен, но MouseUp не везде и не всегда срабытывет (вот в таблице он точно нормально не работает). Я всегда использую для этих целей MouseMove
карма: 22

0
Ответов: 899
Рейтинг: 43
#5: 2009-01-03 01:01:31 ЛС | профиль | цитата
kamakama, а как тебе такой интересный вариант?
code_2323.txt
Получается что точка onClick в данной схеме работает как onMouseUp

kamakama писал(а):
Просто хочется понять принцип

мне тоже интересно, почему не срабатывает onMouseUp, но зато срабатывает onMouseMove даже при неподвижной мышке. Наверное MoveWindow что-то непонятное творит с точками окна, которое перемещает
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_2323.txt [496B] [237]
Ответов: 2267
Рейтинг: 676
#6: 2009-01-03 04:12:01 ЛС | профиль | цитата
kamakama, можно одной точкой обойтись
code_11162.txt
карма: 11

0
файлы: 1code_11162.txt [560B] [416]
Ответов: 875
Рейтинг: 322
#7: 2009-01-03 10:54:37 ЛС | профиль | цитата
Спасибо всем. "Не было ни гроша а тут алтын."
карма: 1

0
Ответов: 3851
Рейтинг: 159
#8: 2009-01-03 13:12:03 ЛС | профиль | цитата
да - круто, осталось только понять - если оно так просто (да ещё и несколькими способами) реализуется схемно, то почему оно не может быть реализовано внутрикомпонентно?
карма: 0
начавший
0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2009-01-03 14:29:40 ЛС | профиль | цитата
Андрей. писал(а):
осталось только понять - если оно так просто (да ещё и несколькими способами) реализуется схемно, то почему оно не может быть реализовано внутрикомпонентно?

понять очень просто - никто не делает программы с перетаскиванием элементов интерфейса по форме и тем более с использованием подмены сообщений в очереди, которую и производит элемент MoveWindow
карма: 27
0
Ответов: 3851
Рейтинг: 159
#10: 2009-01-03 16:38:54 ЛС | профиль | цитата
Dilma писал(а):
никто не делает программы с перетаскиванием элементов интерфейса по форме
у меня была такая мысль, но спорить не буду, ибо сам не уверен в usability этого варианта..
карма: 0
начавший
0
Ответов: 899
Рейтинг: 43
#11: 2009-01-04 01:50:34 ЛС | профиль | цитата
Dilma писал(а):
никто не делает программы с перетаскиванием элементов интерфейса по форме

это почему же, по моему все программы-редакторы электронных схем работают подобным образом. Производится перемещение спрайтов(электронного компонента по листу схемы), правда не знаю можно ли назвать их элементами интерфейса
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2009-01-04 02:28:14 ЛС | профиль | цитата
unalex, в нормальных редакторах это не элементы интерфейса, а
1) иконка курсора
2) отрисовка поверх контекста среды(см. редактор форм в hiasm)
3) перемещение формы с заданным Transparent и AlphaBlend

Помню мне пару раз приходили письма с просьбой уточнить сделаны ли элементы схемы из панелей или еще из каких визуальных контролов... Это распространенное решение среди новичков потому, что самое простое. В свое время делал игру змейка с использованием панелей, после чего больше никогда не рассматривал решений с перетаскиванием визуальных элементов. Вот простой пример:
code_11179.txt

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


карма: 27
0
файлы: 2cpu_usage.png [19.1KB] [305], code_11179.txt [1.1KB] [251]
Ответов: 3851
Рейтинг: 159
#13: 2009-01-04 12:04:34 ЛС | профиль | цитата
Dilma, а как "правильно" сделать, ну например регулятор громкости, как в проигрывателе Windows?
карма: 0
начавший
0
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2009-01-04 19:22:26 ЛС | профиль | цитата
Андрей., правильно это взять PaintBox и нарисовать его на нем. А как рисовать - это уже дело вкуса, можно картинками, можно и из примитивов все сделать, но в любом случае такое решение хоть и сложнее, но зато эффективнее.
карма: 27
0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)