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

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

07.04.2014, 21:06. Показов 2609. Ответов 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
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 19:59
Студворк — интернет-сервис помощи студентам
Ну вот смотри ...
ставиш этот оператор перед тем как будет выполняться сомнительная инструкция
Visual Basic
1
On Error resume Next
и программа не остановиться, а ошибка сохраниться в объекте Err

ниже этой сомнительной инструкции поставь условие что нужно делать

Добавлено через 2 минуты
Visual Basic
1
2
3
4
5
function del()
   On Error resume Next
   x= 0 / 0 
   if err then msgbox ("ошибка деления")
end function
Добавлено через 3 минуты
Цитата Сообщение от aptos Посмотреть сообщение
Я про геморрой с координатами говорю
я тебе уже говорил как надо было (загрузка и расстановка) тогда и острых проблем с гемороем не было
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
08.04.2014, 20:02
Может пригодится...
Вложения
Тип файла: rar Игра 15.rar (8.4 Кб, 6 просмотров)
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 20:11
можно организовать обмен координат между парой лейблой но
там даже обмен координат не понадобиться только названия у лейбла менять

Добавлено через 2 минуты
Ну вот мой друг Василий, прервал веселый диалог готовой игрой в 15
и теперь можно уходить

Добавлено через 6 минут
... там в той игре слишком много ненужного кода
все можно было менее 50 строчек сделать
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
08.04.2014, 21:04
на форме Command1, Picture1 и в нем Label1(0)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Dim a() As Integer
Dim w
 
Private Sub Command1_Click()
g
z
End Sub
 
Private Sub Form_Load()
With Label1(0)
.BorderStyle = 1
.BackColor = &HC0FFFF
.Caption = ""
.Width = 960
 
.FontSize = 32
.Alignment = 2
w = .Width
.Move 0, 0, w, w
End With
Picture1.Width = 4 * w: Picture1.Height = 4 * w
Picture1.Scale (0, 0)-(4, 4)
Picture1.BackColor = &HE0E0E0
For i = 1 To 15
   Load Label1(i)
   Label1(i).Caption = i
   Label1(i).Visible = True
Next i
Label1(0).BackStyle = 0
g
z
End Sub
Sub g()
ReDim a(4, 4)
For i = 1 To 16
    Do
      p = Int(Rnd * 4) + 1
      o = Int(Rnd * 4) + 1
    Loop While a(p, o) <> 0
    a(p, o) = i - 1
Next i
End Sub
Sub z()
For i = 1 To 4
   For j = 1 To 4
      Label1(((a(i, j)) \ 4) * 4 + ((a(i, j)) Mod 4)).Move j - 1, i - 1
   Next j
Next i
End Sub
 
Private Sub Label1_Click(Index As Integer)
r = Label1(Index).Top + 1: c = Label1(Index).Left + 1
If a(r, c) <> 0 Then
 
For i = 1 To 4
If a(r, i) = 0 Then
zn = Sgn(c - i)
   For j = i To c - zn Step zn
      a(r, j) = a(r, j + zn)
   Next j
      a(r, c) = 0
      z
      Exit Sub
End If
Next i
 
For i = 1 To 4
If a(i, c) = 0 Then
zn = Sgn(r - i)
   For j = i To r - zn Step zn
      a(j, c) = a(j + zn, c)
   Next j
      a(r, c) = 0
      z
      Exit Sub
End If
 
Next i
 
End If
End Sub
Добавлено через 2 минуты
итоговая проверка по упорядоченности массива
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
08.04.2014, 21:19
Неплохо ! ...
можете ведь, когда захотите ...
правда пришлось в ручную кидать компоненты
сейчас у меня и The Trick новая фишка !
вся программа на пустой форме

Добавлено через 3 минуты
я отформатировал Ваш код чтоб другим удобнее смотреть было

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Dim a() As Integer
Dim w
 
Private Sub Command1_Click()
    g
    z
End Sub
 
Private Sub Form_Load()
 
    With Label1(0)
        .BorderStyle = 1
        .BackColor = &HC0FFFF
        .Caption = ""
        .Width = 960
        .FontSize = 32
        .Alignment = 2
        w = .Width
        .Move 0, 0, w, w
    End With
    Picture1.Width = 4 * w: Picture1.Height = 4 * w
    Picture1.Scale (0, 0)-(4, 4)
    Picture1.BackColor = &HE0E0E0
 
    For i = 1 To 15
        Load Label1(i)
        Label1(i).Caption = i
        Label1(i).Visible = True
    Next i
    Label1(0).BackStyle = 0
    g
    z
End Sub
 
Sub g()
    ReDim a(4, 4)
 
    For i = 1 To 16
 
        Do
            p = Int(Rnd * 4) + 1
            o = Int(Rnd * 4) + 1
        Loop While a(p, o) <> 0
        a(p, o) = i - 1
    Next i
End Sub
 
Sub z()
 
    For i = 1 To 4
 
        For j = 1 To 4
            Label1(((a(i, j)) \ 4) * 4 + ((a(i, j)) Mod 4)).Move j - 1, i - 1
        Next j
    Next i
End Sub
 
Private Sub Label1_Click(Index As Integer)
    r = Label1(Index).Top + 1: c = Label1(Index).Left + 1
 
    If a(r, c) <> 0 Then
 
        For i = 1 To 4
 
            If a(r, i) = 0 Then
                zn = Sgn(c - i)
 
                For j = i To c - zn Step zn
                    a(r, j) = a(r, j + zn)
                Next j
                a(r, c) = 0
                z
                Exit Sub
            End If
        Next i
 
        For i = 1 To 4
 
            If a(i, c) = 0 Then
                zn = Sgn(r - i)
 
                For j = i To r - zn Step zn
                    a(j, c) = a(j + zn, c)
                Next j
                a(r, c) = 0
                z
                Exit Sub
            End If
        Next i
    End If
End Sub
Добавлено через 1 минуту
и всёравно я уверен что такой код можно написать несколькими строчками ...

Добавлено через 1 минуту
Цитата Сообщение от gaw Посмотреть сообщение
Private Sub Command1_Click()
g
z
End Sub

прикольная реализация ...
2
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
08.04.2014, 21:50  [ТС]
Спасибо всем всем вам. Тут много полезного. Но я все же включу капитана очевидность. Гляньте на название топика. Тут же дело совсем не в алгоритме решения, а в реализации этого через метод программируемого перетаскивания. Может я и пропустил что-то в коде, но вроде ничего похожего на DragDrop не видел.
0
 Аватар для aptos
13 / 13 / 3
Регистрация: 04.06.2013
Сообщений: 156
09.04.2014, 11:35  [ТС]
Спасибо) Плюсика пока что не дам, лимит закончился

Добавлено через 27 минут
Решил, как кто-то советовал, просто обменивать Caption разных Label при возникновение события DragDrop, результат меня устроил. Но когда я пытаюсь учесть перемещение только по горизонтали и по вертикали, что-то непонятное происходит... Не могли бы посмотреть, где я промахнулся?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub num_DragDrop(Index As Integer, Source As Control, x As Single, y As Single)
ind = Index
Text1.Text = num(ind).Left
Text2.Text = num(ind).Top
x1 = num(ind).Left
y1 = num(ind).Top
End Sub
 
Private Sub num_DragOver(Index As Integer, Source As Control, x As Single, y As Single, State As Integer)
If (x1 = num(Index).Left And y1 <> num(Index).Top) Or (x1 <> num(Index).Left And y1 = num(Index).Top) Then
    temp = num(Index).Caption
    num(Index).Caption = num(ind).Caption
    num(ind).Caption = temp
    End If
End Sub
Добавлено через 1 час 18 минут
Разобрался в чем проблема... Есть ли событие, которое срабатывает как только я начал перемещение Label'а? DragDrop видимо срабатывает, когда Label уже опущен на объект.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2014, 11:35
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
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
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru