Я хочу смоделировать игровое меню с помощью меток. Что я хочу сделать, так это то, что когда на него наводится указатель мыши, шрифт становится больше и меняет цвет шрифта. Есть ли уже существующий код для этого, используя только массивы в Visual Basic 6.0? Потому что, если я сделаю это вручную, это займет много времени. Помогите пожалуйста мне.
все метки в форме меняют свойства при фокусе мыши
Ответы (2)
Вам нужно будет поймать мышь, чтобы войти и выйти из событий. Это старо, но вы можете попробовать использовать API TrackMouseEvent для перехвата событий мыши. Вот ссылка, http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Generating_MouseLeave_Events_for_a_Window/article.asp с классом, реализующим API, и приводит пример его использования. Однако статья устарела и обсуждает ее использование только до Win 95, поэтому вам нужно выполнить быстрый тест, чтобы узнать, поддерживается ли она.
person
jac
schedule
27.09.2012
для создания массива меток: поместите метку в форму и присвойте ей индекс 0, который в основном создаст массив из 1 метки, который затем можно расширить в своем коде.
'1 form with :
' 1 label : name=Label1 Index=0
Option Explicit
Private Sub Form_Load()
Dim intIndex As Integer
For intIndex = 1 To 4
Load Label1(intIndex)
Label1(intIndex).Visible = True
Label1(intIndex).Caption = CStr(intIndex)
Next intIndex
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
OnLabel False
End Sub
Private Sub Form_Resize()
Dim intIndex As Integer
Dim sngWidth As Single, sngHeight As Single
Dim sngLblWidth As Single
sngWidth = ScaleWidth
sngHeight = ScaleHeight
sngLblWidth = sngWidth / Label1.Count
For intIndex = 0 To Label1.Count - 1
Label1(intIndex).Move intIndex * sngLblWidth, 0, sngLblWidth
Next intIndex
End Sub
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
OnLabel True
End Sub
Private Sub OnLabel(blnOn As Boolean)
Dim intIndex As Integer
Dim intSize As Integer
Dim lngColor As Long
If blnOn Then
intSize = 20
lngColor = vbRed
Else
intSize = 10
lngColor = vbBlack
End If
For intIndex = 0 To Label1.Count - 1
With Label1(intIndex)
.FontSize = intSize
.ForeColor = lngColor
End With 'Label1(intIndex)
Next intIndex
End Sub
person
Hrqls
schedule
08.11.2012