gifts2017

Пример как можно перетаскивать картинки на форме

Опубликовал Ярослав Радкевич (WKBAPKA) в раздел Программирование - Работа с интерфейсом

Навеяно обработкой "Рабочий стол" (http://infostart.ru/projects/5466/ ) для 1С:Предприятие, идея алгоритма I_G_O_R, код в собственном исполнении.

Обработка демонстрирует технологию перемещения картинки на форме. Код простой и понятный, без оптимизации - для простоты восприятия. Может кому и пригодится в повседневной работе :)

При нажатии кнопки "Как рамка", при перетаскивании картинка сохраняет свое первоначальное положение которое меняет только после окончания перетаскивания. Пользователь наблюдает перемещение в виде рамки.

Для перетаскивания, наводим курсор, нажимаем левую кнопку мыши, удерживая ее, производим перемещение объекта путем акта движения руки в заданном головой направлении.

Навеяно обработкой "Рабочий стол" - http://infostart.ru/projects/5466/

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
-
.1251549694 6,99Kb
28.09.14
278
.1251549694 6,99Kb 278 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Шишкин (Шёпот теней) 29.08.09 21:59
... убИл ...
... вОт ...
..... ))) ....
2. Ярослав Радкевич (WKBAPKA) 29.08.09 22:00
3. Александр Шишкин (Шёпот теней) 29.08.09 22:02
I_G_O_R то же плюс поставил в "Настройка и оптимизация" ...
4. Александр Шишкин (Шёпот теней) 29.08.09 22:03
... ммм ...
... это ВАМ спАсибо ...
... удачи ...
5. Ярослав Радкевич (WKBAPKA) 29.08.09 22:56
я только не учитывал границы формы, но это не сложно, одно условие и выравнивание по границе - 2 пункта. Так, привел для примера. Но возможности идея открывает огромные. I_G_O_R большой респект за идею.
6. Александр Шишкин (Шёпот теней) 29.08.09 23:28
WKBAPKA и I_G_O_R

... гениально чЁ ужЖж и говорить ...

... с уважением "Шёпот теней" ...
7. Ярослав Радкевич (WKBAPKA) 29.08.09 23:38
Шёпот согласись, идея рабочего стола лежала на поверхности. Каждый из нас работал с рабочим столом каждый день и до Светозора не подумал, что можно такое же сделать в 1С. Говорят, что в наше время что либо новое придумать нельзя, ан нет, можно, еще как можно :)
тебе спасибо за плюс, думаю что твой рабочий стол теперь будет еще лучше!
8. Сергей (Che) Коцюра (CheBurator) 29.08.09 23:57
идея рабочего стола меня бесит до крайности.
sea-man; Evg-Lylyk; +2 Ответить 1
9. Ярослав Радкевич (WKBAPKA) 30.08.09 00:29
ну мало ли что меня бесит. идея очень шикарная. особенно, с меню в УПП и УТП :)
10. Александр Шишкин (Шёпот теней) 30.08.09 00:39
(7) ... нууу.... не думаю...
... и не потому, что "упираюсь" - просто не понимаю необходмости и нужности и удобства в "двигании" значков ...
... вОООбщем это дело вкуса ...

... а рабочих столов в 1С полно ... посмотрите БП, например, - просто они реализованы в манере 1С - вОООбщем дело вкуса ...

... мне в "моём" столе нравятся именно тем что описано в описании ... а передвижение значков мало интересует ...

... идея I_G_O_R и ваше воплощение - отлично ... я восхощЁн ...
11. Игорь <...> (I_G_O_R) 30.08.09 01:55
Я уже говорил, что это не моя идея, а Светозора, так что спасибо ему. У него код был закрыт, но модуль формы нельзя закрыть, я отладчиком обнаружил, что на форме появляются 8 невидимых картинок и все стало ясно, а код написать дело техники. Код был закрыт, я его разгадал и рассказал всем, а вы мне плюсики ставите, как-то не хорошо, не нужны мне такие плюсики.
12. Александр Шишкин (Шёпот теней) 30.08.09 09:50
(11) ... хорошо ... забрал .... было бы сказано ... вот ...
13. Ярослав Радкевич (WKBAPKA) 30.08.09 13:40
2(11): Плюсики за то что не поленился. У меня была идея код открыть, да все как то руки не доходили.
Дело в том, что для таких конфигураций как УТП и УПП такие технологии очень сильно облегчают жисть. Если еще добавить более одного рабочего стола, на которых можно группировать ярлыки, очень будет удобно делать интерфейсы.
14. Игорь Исхаков (Ish_2) 31.08.09 11:30
(11),(13) Я извиняюсь.
Но при втором взгляде предлагамое решение (перетаскивание на "рабочем столе") показалось "диковатым извращением".

На мой взгляд, оказалось гораздо проще , нагляднее, функциональнее использовать следующий подход.

Расположить на форме поле табличного документа ("рабочий стол"). Роль "ярлыков" будут играть рисунки ("текст") табличного документа.

И тогда все операции с "ярлыками - рисунками" (добавление, удаление, перетаскивание, изменения размера, корректировка) будут осуществляться на уровне платформы.

Запретить активизацию пустых ячеек, убрать автоскроллинг и т.д.
можно программно.
15. Игорь Исхаков (Ish_2) 31.08.09 11:41
(12) Шепот , нас обманули ! См. (14)
16. Александр Шишкин (Шёпот теней) 31.08.09 12:15
(15) ... на рынке всегда два умных дурака ... и оба радуются ... )))

... данное решение мне понравлось ...

... понимаю что их может быть много ... решение с табличном полем ? - согласен ...

... но есть идея а есть реализация ... то, что кажется лёгким изначальным - становится трудным при реализации ...

... рабочий стол - штатными средствами - при 100 % заполнении рисунком вЕЕЕсьма "тормознутое" дело ...

... повторюсь: дело не столько в красоте сколько в практичности и не обходимости ... поэтому изначально надо задаться вопросом для "ЧЕГО" делаем "рабочий стол" ... "свой" я делал из описанной в описании необходимости ...

... поэтому дискуссия должна протекать в русле не "как" - т.к. способов реализации много" а для "чего" - тогда вопрос методов реализации почти отпадёт ...

... вот ...
17. Игорь Исхаков (Ish_2) 31.08.09 12:22
(16) Бесполезность идеи "рабочего стола" не вызывает сомнений.
Речь идет лишь о технологическом вопросе : о подходе к решению проблемы "перетаскивания" и др.
18. Александр Шишкин (Шёпот теней) 31.08.09 13:10
(17) ... бесполезность ... ? ... нуу... нууу... идея летает в воздухе и не только ... имеет несколько воплощений как от сАмой 1С так и других товарищЧей ...

.. и это не столько "идея" сколько лишь возможность повторить то, что уже прижилось в других системах ... метод аналогии ...

... думаю не стоит своЁ мнение или мнения круга лиц - выдавать как истину ...
... думаю как раз наоОобоОорот что те сложившиеся формы общения интерФейса -будут жить и развиваться - это и "меню" и "значки" и "рабочий стол" и их различные сочетания ...

... другого пока не придумали ...

... или ??? ...

... вот ...
19. Игорь Исхаков (Ish_2) 31.08.09 13:21
(18)
Уточняю (17) : речь идет не об идее рабочего стола , как таковой , а об
идее такой реализации "рабочего стола", как в текущей теме.
Так вот : также как и моя с табличном полем , так и идея автора темы могут рассматриваться лишь как демонстрации техники программирования.

Применение в бизнес-решениях таких технологий выглядит "чудаковато".
Говорю только от своего имени , разумеется.

Более практичным выглядит подход к построению интерфейса в 8.2.

20. Александр Шишкин (Шёпот теней) 31.08.09 14:23
(18) ... принято ... СОгласен ... уважаю твоё мнение ...

.. лично я подерживаю любую идею "рабочего стола" ...

... по поводу "чудаковато"-сти - думается мы начинаем вторгаться в область "вкусов" и "предпочтений" - а тут выяснить истину БЕЗполезно ... )))

... вОт ...
21. Александр Шишкин (Шёпот теней) 31.08.09 14:25
в (20) читать первую строку в следующем изложении:

(19) ... принято ... СОгласен ... уважаю твоё мнение ...

... волнуюсьВОТошибаюсь ...
22. Александр Шишкин (Шёпот теней) 31.08.09 14:51
WKBAPKA
... опять поздравляю: уже "6" ...
... не плохо ))) и рАзговор удАлся ...
... так сказать теория и практика рука об руку ...

... дальнейших удачЬ ...
23. Ярослав Радкевич (WKBAPKA) 31.08.09 15:43
использовать поле табличного документа... можно попробывать.... только помоему нельзя сделать подложку, по крайней мере я не нашел такой возможности, и может повылазить куча неприятных нюансов
24. Ярослав Радкевич (WKBAPKA) 31.08.09 15:45
т.е. если подложку нельзя сделать тогда это большой минус в таком решении. А с точки зрения реализации соглашусь, очень просто все делается
25. Игорь Исхаков (Ish_2) 31.08.09 15:48
26. Ярослав Радкевич (WKBAPKA) 31.08.09 15:53
27. Игорь Исхаков (Ish_2) 31.08.09 15:57
(26) Не думал , что это существенно. Ок.Подумаю.

А вообще , после выхода 8.2 предплагаю мы будем с грустью смотреть на эти изыски.
28. Ярослав Радкевич (WKBAPKA) 31.08.09 16:23
согласен. но пока 8.2. нет приходиться извращаться.. а прикиньбте, как народ до сих пор извращается на 7.7. ;) и не переходит же на 8.х )
29. Игорь <...> (I_G_O_R) 31.08.09 19:09
короче и то фигня и это, мне лично рабочий стол вообще не нужен т.к. я работаю во франче. Клиенты мне за рабочий стол врядли заплатят, а бесплатно работать не хочется. Есть только один плюс: никогда не работал с перетаскиванием, а теперь кое-что умею.
30. Ярослав Радкевич (WKBAPKA) 31.08.09 19:29
(29): ага, это верно. но все таки, дело не в самом рабочем столе, а технологии. это дает возможность создавать не страндартные меню. и это плюс, как поется в песне :)
31. Ярослав Радкевич (WKBAPKA) 31.08.09 19:32
да и самое главное во всем этом, это не стандартные решения. т.е. заставляе взглянуть на многие проблемы с другой стороны.
иногда, то что говорят, нельзя сделать штатными средствами, оказывается можно, и работает достаточно эффективно
32. Игорь Исхаков (Ish_2) 31.08.09 21:09
(29) , (31) Согласен с обоими. Новыми знаниями и навыками и полезны такие обсуждения.
33. Игорь Исхаков (Ish_2) 31.08.09 21:11
(31) А "подложку" я всё-таки прикину как сделать. Потом доложу.
34. Александр Шишкин (Шёпот теней) 31.08.09 21:39
(33) .. как версия для подложки - сделать как вебСайдеры - пилят риснок на необходимые части, вставляют - смотрится как единое целое ... у них даже и программки специальные есть по разбиению ... главное чтобы количество квадратиков было не запредельным ....

... вот ...

... всем удачи ...
35. Игорь Исхаков (Ish_2) 31.08.09 22:19
(34) Почти ничего не понял.
Решение в лоб выглядит так :

Р - рисунок табл.документа накрывает все видимое поле табл.документа с типом "картинка" , куда загружается файл с расширением ".bmp" ("Подложка")
П - поля картинки с запрещением перетаскивания (т.е. запрещают скроллинг)

Схема расположения :

РП
П

Поверх рисунка "Р"(подложка) свободно создаются и перетаскиваются рисунки с типом "текст".
Пока так.
36. Игорь Исхаков (Ish_2) 31.08.09 22:22
Виноват , пользователю недоступно тогда изменение фона рабочего стола.
37. Игорь Исхаков (Ish_2) 31.08.09 22:54
Виноват 2.
Никаких проблем с изменением пользователем картинки фона рабочего стола ("подложки") не возникнет.
Организуется для пользователя диалог выбора файла ".bmp" и после :

МояКартинка = Новый Картинка(ИмяФайлаКартинки)
РисунокРабочегоСтола.Картинка = МояКартинка;
38. Ярослав Радкевич (WKBAPKA) 01.09.09 06:24
я на выходных попробую, будет ли работать:) но иногда и на форме имеет смысл что либо подвигать )
39. Игорь Исхаков (Ish_2) 01.09.09 18:12
(38) ,(34) Виноват 3.
А лучшим ,по-моему, решением будет использование свойства табл.документа
ФоноваяКартинка , куда и загружается файл .bmp , Например 800х600.
Тогда рисунок "Р" - просто не нужен.
Конечно ,нужно пробовать , чтобы сказать что-то более определенное , но
сам подход с использованием поля табл.документа и рисунков табл.документа (текст, картинка , лист Excel , фигуры и т.д) в качестве ярлыков гораздо перспективнее . Т.к. используется вся мощь платформы , то вид и функциональность "рабочего стола" могут быть просто недостижимыми
при другом подходе.
40. Валерий Гайдабура (director04) 02.09.09 07:30
(8) Когда чела "бесит" - это от лукавого.... У каждого свои фобии.
41. Роман Зиновьев (Широкий) 09.10.09 11:17
Блин .. а с утечкой памяти что нить придумали.
Я все уже перепробовал - лажа получается
42. Ярослав Радкевич (WKBAPKA) 09.10.09 19:23
43. Александр Венгер (venger) 10.10.09 18:02
44. Ярослав Радкевич (WKBAPKA) 10.10.09 20:53
ну дык вопросы к 1С разработчикам ;)
45. Роман Зиновьев (Широкий) 12.10.09 09:31
46. Ярослав Радкевич (WKBAPKA) 12.10.09 10:35
возможно это происходит из за объявленной глобальной переменной в модуле... в принципе, ее можно и не использовать...
47. Александр Венгер (venger) 12.10.09 12:05
(46) А не из-за динамического создания-удаления временных картинок вокруг перетаскиваемой на форме, случаем?
48. Ярослав Радкевич (WKBAPKA) 12.10.09 13:46
ну вы интересные ребята, честное слово... откуда я знаю, из-за чего. Я ведь оперирую языком платформы.
49. Александр Венгер (venger) 13.10.09 21:27
(41) Вот игруха, вроде как, без утечки: http://infostart.ru/public/58600/
Мои предположения в 47-м посте, похоже, оправдались...
50. Ярослав Радкевич (WKBAPKA) 13.10.09 22:19
2(49): я еще раз настаиваю на том, что это баг платформы... если есть возможность создавать на лету объекты, то и Destructor этих объектов должен работать корректно... если есть утечка памяти, значит это баг в платформе!
51. Ярослав Радкевич (WKBAPKA) 13.10.09 22:23
типа сам себя похвалил :D

я этот пример написал за один час... есть у меня подозрение, что утечка памяти связана с тем, что есть глобальная переменная для временного хранения текущей позиции картинки, а может , связано с неоптимальной передаче параметров... это всего лишь пример... плж., оптимизируем и улучьшаем!
52. Игорь <...> (I_G_O_R) 13.10.09 22:25
поддерживаю WKBAPKA, в моей обработке тоже утечки,баг платформы однозначно
53. Игорь <...> (I_G_O_R) 13.10.09 22:34
вот этот код попробуйте у себя запустить:
Для к = 1 по 10000 Цикл
		
		Картинка = ЭлементыФормы.Добавить(Тип("ПолеКартинки"), "Картинка");
		ЭлементыФормы.Удалить(Картинка);
		
	КонецЦикла;
...Показать Скрыть


сразу видно утечки памяти, всех поздравляю с обнаружением очередного бага, не было бы инфостарта, может никогда бы не нашли :o
54. Ярослав Радкевич (WKBAPKA) 13.10.09 23:12
2(53): + 1
иногда у меня создается впечатление, что некоторые путают языки высокого уровня с предметно-ориентированными конструкторами, и выдвигают к ним повышенные требования...
55. Александр Венгер (venger) 14.10.09 11:21
(50)-(54) +49, Похоже у нас получился разговор немого со слепым, никто не сомневался, что баг платформы, вопрос был в том, чтобы понять где он и обойти, сохранив возможность перетаскивания, что я Вам и продемонстрировал в игрухе тут: http://infostart.ru/public/58600/
А Вы вместо того, чтобы попытаться понять, что Вам говорит человек, а потом уже отвечать, твердите свое... Ну да ладно... Конечны Вы ребята самые умные, куда уж мне;)
56. Ярослав Радкевич (WKBAPKA) 14.10.09 11:26
2(55): я пока свой рабочий стол не собирался делать, так что искать в чем баг платформы и как его обойти не очень хотелось... да и I_G_O_R продемонстрировал незатейливый код по созданию и удалению картинки в цикле. Как обойти этот баг? ;)
57. Александр Венгер (venger) 14.10.09 11:34
(56) > Как обойти этот баг?
Так качните игруху по ссылке и гляньте предложенной мной способ обхода в действии, сделайте мне приятное;) Ну ё, я ж тоже человек, тоже хочу одобрения от коллег;) Способ прост, как пять копеек, кстати;)
58. Роман Зиновьев (Широкий) 14.10.09 12:37
Я тупо сделал своп картинок - т.е. не удаляю/создаю а просто меняю координаты у существующих картинок - все нормально.

(57) Обработку не качал - как у тебя сделано?
59. Ярослав Радкевич (WKBAPKA) 14.10.09 13:21
2(58): нормальный вариант решения... прелесть
60. Александр Венгер (venger) 14.10.09 15:23
61. Епрст (Ёпрст) 14.10.09 16:01
Как то в снеговике через одно место это всё...
Вот пример таскания всего в клюшках + формекс:

Прикрепленные файлы:
move2.ert
62. Ярослав Радкевич (WKBAPKA) 14.10.09 19:26
2(60): переходим на ты ;) ты же понимаешь, что при должном вниманию, каждому из нас пришла бы в голову такое же решение... мы же не дураки тут... но подчеркиваю, еще раз, при внимании, я лишь выложил пример и написал, дальше можно оптимизировать как хош ;)

Я персона Вип Вип, у меня есть джип джип, обгоняю, подрезаю, все сигналят, БИП, БИП ;)
63. Ярослав Радкевич (WKBAPKA) 14.10.09 19:28
2(61): показать полочки, где лежат пирожки ? тут обсуждается реализация штатными средствам!
64. Александр Венгер (venger) 14.10.09 19:39
(62) > ты же понимаешь...

Полностью согласен, вообще, как-то нехорошо стартанули в общении, но думаю, что в дальнейшем, эта заминка замнется и забудется:)
65. Ярослав Радкевич (WKBAPKA) 14.10.09 19:46
2(65): ;) я вообще не конфликтый человек, просто иногда очень эмоциональный :(
66. Лев Корл (lev6975) 19.08.13 20:11
По- ходу, в 1с перетаскивание картинки нереально стандартными событиями с получением координат дропа, всё перетаскивание ориентировано на табличные поля, колонки и прочее, пасьянс косынку написать нельзя, например:-)))))
ЗЫ:Штатными средствами 1С без аддонов и костылей
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа