Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156

Метод программируемого перетаскивания

07.04.2014, 21:06. Показов 2616. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотелось бы узнать о нем, в частности, для компонента Label. Ссылки с понятными примерами приветствуются, но желательно простейший пример кода.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.04.2014, 21:06
Ответы с готовыми решениями:

Методы программируемого перетаскивания
Условие: Разработать приложение, работа которого давала бы представление об особенностях использования значений параметра State...

Питание программируемого МК от USB
Есть USB программатор (аналог того, что у ДиХалта на сайте описан), есть схемка с потредлением до 40мА. И таких "схемок" очень...

Составить программу расчёта величины программируемого урожая (ц/га) по формуле
Программа должна быть написана в двух вариантах: 1)использовать For ... To.. Step, Next 2) использовать IF... GO TO Составить...

27
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
07.04.2014, 23:00
Лучший ответ Сообщение было отмечено aptos как решение

Решение

Имеется в виду DragDrop?
Тогда просто. В свойствах контрола, в частности Label1 ставим DragMode = 1
И простейший код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Label1_DragDrop(Source As Control, X As Single, Y As Single)
If Source = Label2 Then
 
Label1 = Label2
End If
 
End Sub
 
Private Sub Label2_DragDrop(Source As Control, X As Single, Y As Single)
If Source = Label1 Then
Label2 = Label1
End If
End Sub
В результате перетаскивания надписи меняются
2
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
08.04.2014, 00:29
Цитата Сообщение от aptos Посмотреть сообщение
простейший пример кода.
на форме Command1, Label1, Picture1
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Type POINTAPI
  X As Long
  Y As Long
End Type
Dim k As POINTAPI
 
 
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
k.X = X: k.Y = Y
End Sub
 
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
c_m Command1, Button, X, Y, k
End Sub
 
'-----------------------------------
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
k.X = X: k.Y = Y
End Sub
 
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
c_m Label1, Button, X, Y, k
End Sub
 
'-------------------------------------
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
k.X = X: k.Y = Y
End Sub
 
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
c_m Picture1, Button, X, Y, k
End Sub
 
'=====================================
Private Sub c_m(c As Object, Button As Integer, X As Single, Y As Single, k1 As POINTAPI)
If Button = 1 Then
c.Move c.Left + X - k1.X, c.Top + Y - k1.Y
End If
End Sub
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 13:43  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Имеется в виду DragDrop?
Тогда просто. В свойствах контрола, в частности Label1 ставим DragMode = 1
И простейший код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Label1_DragDrop(Source As Control, X As Single, Y As Single)
If Source = Label2 Then
 
Label1 = Label2
End If
 
End Sub
 
Private Sub Label2_DragDrop(Source As Control, X As Single, Y As Single)
If Source = Label1 Then
Label2 = Label1
End If
End Sub
В результате перетаскивания надписи меняются
Уже разобрался с этим, но все равно спасибо)

Добавлено через 7 минут
Делаю игру пятнашки, нужно лэйблы местами менять, их там аж 16 штук. Как можно учесть при их обмене, что менять можно только вертикально и горизонтально, но по диагонали нельзя?
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 13:51
Цитата Сообщение от aptos Посмотреть сообщение
их там аж 16 штук
Да кстати можно на форме обойтись одним лейблом
и программно подгрузить и рассредоточить остальные 15 пятнашек

Добавлено через 3 минуты
пример
Visual Basic
1
2
3
Load Label1(2)
Label1(2).move  Label1(1).left ,Label1(1).top *2
Label1(2).visible = true
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 13:53  [ТС]
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
Да кстати можно на форме обойтись одним лейблом
и программно подгрузить и рассредоточить остальные 15 пятнашек

Добавлено через 3 минуты
пример
Visual Basic
1
2
3
Load Label1(2)
Label1(2).move  Label1(1).left ,Label1(1).top *2
Label1(2).visible = true
Я бы сам с радостью упростил, только вообще у меня задание именно по массивам (массив Label'ов в моем случае). И делать именно программным перетаскиванием. Задание, как и сам массив, извращенное.)

Когда говорил про 16 и имел в виду массив.)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 13:57
Если использовать дополнительную загрузку объектов
в твоём случае лэйблов то массивы для этого как-раз и подходят
(массивы и циклы)
ладно ... успешной учёбы !
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 14:03  [ТС]
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
Если использовать дополнительную загрузку объектов
в твоём случае лэйблов то массивы для этого как-раз и подходят
(массивы и циклы)
ладно ... успешной учёбы !
Похоже сначала я не так понял. Ага спасибо
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
08.04.2014, 17:01
по ходу вопрос, игра 15-шки а
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
их там аж 16 штук
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 17:07
а клеток и должно быть 16
так как одна пустая ...
и 15 фишек
вы в детстве не видели такую плассмасовую игрушку ?
1
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
08.04.2014, 17:22
видел, потому и спрашиваю
есть поле 4х4 на нем размещены 15 фишек
только вот перетягивать фишки - это не совсем то
так как есть только одно свободное место, то его может занять
только соседняя по перпедикулярных направлениях фишка
следовательно, если кликнуть любую фишку, - можно
гораздо проще найти Г , I или -- -образную цепочку, которую необходимо сдвинуть на 1

Добавлено через 1 минуту
в простейшем случае можно ограничиться горизонтальной и вертикальной цепочками
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 17:24
...Неа ...
надо DragDrop
со свистелками ...
... плавными полупрозначными тонами ...
со спец-эффектами и музыкой ...
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 18:47  [ТС]
Цитата Сообщение от gaw Посмотреть сообщение
видел, потому и спрашиваю
есть поле 4х4 на нем размещены 15 фишек
только вот перетягивать фишки - это не совсем то
так как есть только одно свободное место, то его может занять
только соседняя по перпедикулярных направлениях фишка
следовательно, если кликнуть любую фишку, - можно
гораздо проще найти Г , I или -- -образную цепочку, которую необходимо сдвинуть на 1

Добавлено через 1 минуту
в простейшем случае можно ограничиться горизонтальной и вертикальной цепочками
Я пока и с перемещением одной фишки не разобрался (другую задачу пока делаю) , а вы мне уже про цепочки рассказываете. Я бы и сам не против так сделать, только желательно слова программным кодом подкреплять.)
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
08.04.2014, 19:03
Цитата Сообщение от aptos Посмотреть сообщение
другую задачу пока делаю
а, ну извините, я же не знал
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 19:23
Цитата Сообщение от gaw Посмотреть сообщение
Г , I или -- -образную цепочку, которую необходимо сдвинуть на 1
Собственно идея отличная, жаль что понять дано лиш избранным ...

Добавлено через 6 минут
я то понимаю так что если у Х есть свободное
место в одном из 4-х направлений то шаг +1 (в то направлнеие)

Добавлено через 7 минут
Кстати надо еще перемежать 15 фишек ...

я бы сделал так ...
Visual Basic
1
2
3
4
5
6
for f= 1 to 15
 KolFish = len (TextFish)
 res = Fix(Rnd * KolFish)
 mid(TextFish,res+1,1) = "-"
 TextFish = replace (TextFish,"-","")
x = x &  res & ","
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 19:26  [ТС]
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
Собственно идея отличная, жаль что понять дано лиш избранным ...

Добавлено через 6 минут
я то понимаю так что если у Х есть свободное
место в одном из 4-х направлений то шаг +1 (в то направлнеие)

Добавлено через 7 минут
Кстати надо еще перемежать 15 фишек ...

я бы сделал так ...
Visual Basic
1
2
3
4
5
6
for f= 1 to 15
 KolFish = len (TextFish)
 res = Fix(Rnd * KolFish)
 mid(TextFish,res+1,1) = "-"
 TextFish = replace (TextFish,"-","")
x = x &  res & ","
В любом случае надо сначала исключить перемещение по диагонали... Думаю это будут условия, что изменяться могут либо только Х, либо только У. А потом уже проверять, если в направлении перемещения пустой Label. Жаль только, что на словах все легко, а код собрать сложнее... Нужно уйму координат в голове держать, еще и связать вместе. Да и других косяков полно. Потому и не тороплюсь за нее браться, предчувствую много геморроя.

А насчет перемешивания - первое что я сделал, это рандомное расставление значений Label.Caption. Мои знания ограничены школьной программой и тем, что успел в универе подхватить. В общем так я это делал:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Form_Load()
Dim i As Single, j As Single, num_pos(0 To 15) As Single, k As Boolean
For i = 0 To 15
Randomize
num_pos(i) = Int(16 * Rnd)
For j = 0 To 14
If num_pos(i) = num_pos(j) And i <> j Then
i = i - 1
j = 15
End If
Next
Next
For i = 0 To 15
num(i).Caption = num_pos(i)
If num_pos(i) = 0 Then num(i).Caption = ""
Next
End Sub
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 19:33
Нет .. код будет около 50 строчек, а может и меньше

Добавлено через 3 минуты
Я бы изначально расспределил фишки в матрице 4X4
а номера фишек в строке, вот и все ...

Добавлено через 3 минуты
по порядку без перемешиваний
ABCD
EFGH
IJKL
MNO ... типо того

где индексом лейбла мог бы быть Label1 (ASC(Arr(x,y))).caption
1
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 19:34  [ТС]
Да фишки я расставил, и рандомные значения раскидал. Я про геморрой с координатами говорю. Кода даже если и не много, я скорее всего буду путаться, и это затянется. В любом случае дойду до этого.
Вложения
Тип файла: 7z Game.7z (1.4 Кб, 7 просмотров)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 19:42
тоесть условием может быть ошибка хода ! в обработчике On Error ..

If err then ... ход не допустим !

Добавлено через 2 минуты
и второе условие если матрица = начальному построению то победа !
0
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 19:45  [ТС]
Цитата Сообщение от FelixMacintosh Посмотреть сообщение
тоесть условием может быть ошибка хода ! в обработчике On Error ..

If err then ... ход не допустим !

Добавлено через 2 минуты
и второе условие если матрица = начальному построению то победа !
Простейший пример On Error можно? Просто пока не знаю что он из себя представляет, не могу сообразить, чем он помочь может.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2014, 19:45
Помогаю со студенческими работами здесь

Область перетаскивания
Сразу извиняюсь что столько вопросов и тем) но учусь... 1)Как реализовать область перетаскивания обьекта равную с экраном? У меня...

Перетаскивания вкладок в TabControle
(WPF) Собственно вопрос, может кто-нить делал, разбирался в вопросе перетаскивания вкладок в TabControle. Пример - вкладки в Chrome...

Блокировка перетаскивания табов
Здравствуйте, есть MyTabWidget наследуемый от QTabWidget. В нем установлен режим : this-&gt;tabBar()-&gt;setMovable(true); табы таскаются,...

Конфликт щелчка и перетаскивания
на форме есть ряд картинок. При перетаскивании над ними выполняются действия. Но и при щелчке по картинке выполняются действия. Но...

Отловка события перетаскивания
Суть вопроса Нужно чтоб при перемещении ярлыка папки в Форму происходили действия (как в Проигрывателях - мп3) без кнопок! Считывание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru