Взаимный обмен параметров у объектов (похоже на пятнашки) - VB

Узнай цену своей работы

Формулировка задачи:

Нужно организовать обмен текста,цвета,картинок и т.д. у лайбелов и имайджем(но не суть) допустим у нас есть 6 лайбелов (значения от 1 до 6) и мы перетаскиваем 5й на 1й и их значения меняются местами. Количество вот таких обменов бесконечно. Помогите написать кусок обмена параметров. вот на клепал примерчик.
Пример : http://youtu.be/MkRTm9weqTk

Решение задачи: «Взаимный обмен параметров у объектов (похоже на пятнашки)»

textual
Листинг программы
Dim xp As Single, yp As Single
Dim t As Single, l As Single
Dim ind1%
Dim w%, h%
Dim tr As Boolean, tr1 As Boolean
Dim N%, dh
 
 
Private Sub Command1_Click()
For i = 1 To N
   Randomize (Timer)
   Label1(i).BackColor = RGB(Int(Rnd * 255) + 1, 255 - Int(Rnd * 255), Int(Rnd * 155) + 1)
Next i
End Sub
 
Private Sub Form_Load()
dh = 200
Timer1.Enabled = False: Timer1.Interval = 2
N = 9
With Label1(0)
.BorderStyle = 1: .BackColor = vbGreen: .FontSize = 14: .Alignment = 2
.Caption = 1
w = .Width / 5
h = .Height / 5
.Move w, h
Me.Move Me.Left, Me.Top, (N + 1) * .Width / 2, 1.5 * (N + 1) * .Height
End With
For i = 1 To N
   Load Label1(i)
   Label1(i).Move Label1(i - 1).Left + w, Label1(i - 1).Top + 1.2 * Label1(0).Height
   Randomize (Timer)
   Label1(i).BackColor = RGB(Int(Rnd * 255) + 1, 255 - Int(Rnd * 255), Int(Rnd * 255) + 1)
   Label1(i) = i + 1
   Label1(i).Visible = True
Next i
 
End Sub
 
Private Sub Label1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
   yp = Y
   xp = X
   t = Label1(Index).Top
   l = Label1(Index).Left
   ind1 = Index
   Label1(Index).MousePointer = 15
   tr1 = False
End If
End Sub
 
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If tr = False Then
   If Button = 1 Then
      Label1(Index).ZOrder 0
      Label1(Index).Move Label1(Index).Left + X - xp, Label1(Index).Top + Y - yp
'prov Index
   End If
Else
   Label1(Index).Move l, t
End If
End Sub
 
Private Sub Label1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
prov Index
If tr1 = False Then Timer1.Enabled = True
'Label1(Index).Move l, t
Label1(Index).MousePointer = 0
tr = False
tr1 = False
End Sub
 
Sub prov(ind%)
For i = 0 To N
   If i <> ind Then
       If Abs(Label1(i).Left - Label1(ind).Left) < w And Abs(Label1(i).Top - Label1(ind).Top) < h Then
Lbl_p = Label1(ind).BackColor
   Label1(ind).BackColor = Label1(i).BackColor
      Label1(i).BackColor = Lbl_p
Lbl_p = Label1(ind)
   Label1(ind) = Label1(i)
      Label1(i) = Lbl_p
tr = True
Exit Sub
End If
End If
Next i
tr1 = True
End Sub
 
Private Sub Timer1_Timer()
If Abs(Label1(ind1).Left - l) > dh Then
  Label1(ind1).Left = Label1(ind1).Left - Sgn((Label1(ind1).Left - l)) * dh
Else
  Label1(ind1).Left = l
End If
 
 If Abs(Label1(ind1).Top - t) > dh Then
    Label1(ind1).Top = Label1(ind1).Top - Sgn((Label1(ind1).Top - t)) * dh
 Else
    Label1(ind1).Top = t
 End If
Timer1.Enabled = Not ((Label1(ind1).Left = l And Label1(ind1).Top = t))
 
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5