Страница: 1 |
в форме есть метка (label1), мне надо,чтобы при наведении на неё курсора мыши она меняла свой цвет на &H8000&, т.е. Label1.BackColor = &H8000&, Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) а как теперь сделать, чтобы при выходе курсора за пределы Label1 она меняла свой цвет на &H4000& ?
Не юзай MouseMove, юзай GetCursorPos! А где этот GetCursorPos и как им пользоваться? А где этот GetCursorPos и как им пользоваться? Этот пример конечно не притиндует на то чтобы называться идеальным но у меня работает нормально. /пример: Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub /реакция на выход за пределы Label Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub А как по мне, так лучше бы с GetCursorPos...(это такая апи функция) Держи, специально для тебя сделал. '''Модуль класса (Class1) Sub DemoLabel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '''Модуль формы Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Private MyLabel(4) As VB.Label Private Sub Form_Load() Private Sub Timer1_Timer() CurrentIndex = Val(Timer1.Tag) TPY = Screen.TwipsPerPixelY: LPX = Screen.TwipsPerPixelX LabelLeft = 1 + MeBorderWidth + (Me.Left + MyLabel(CurrentIndex).Left) / LPX If CursorPoint.X < LabelLeft Or CursorPoint.X > LabelRight Or CursorPoint.Y < LabelTop Or CursorPoint.Y > LabelBottom Then End Sub 2 CyRax: Вот наворотил! спасибо! Да и ваще всем спасибо, что ламаков(вроде меня :--) не пинаете, щас все способы попробую, о результатах сообщу Попрбовал.... Остановился на варианте, который предложил &&&&M-простой как три копейки, вписать в мою прогу-дело пяти секунд, заменил Label1.ForeColor на Label1.BackColor и получил то, что нужно! З.Ы. Ещё раз всем спасибо! Ничего дружище, я всё равно её на сайт отослал. Не тебе, так кому-нибудь другому пригодится Страница: 1 |
Вопрос: вопрос о цвете label
Добавлено: 14.03.03 19:31
Автор вопроса: maxcs
я делаю:
Label1.BackColor = &H8000&
End Sub
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #1
Добавлено: 14.03.03 19:46
Номер ответа: 2
Автор ответа:
maxcs
Вопросов: 2
Ответов: 7
Профиль | | #2
Добавлено: 14.03.03 20:20
Номер ответа: 3
Автор ответа:
maxcs
Вопросов: 2
Ответов: 7
Профиль | | #3
Добавлено: 14.03.03 20:20
Номер ответа: 4
Автор ответа:
&&&&M
Вопросов: 8
Ответов: 68
Профиль | | #4
Добавлено: 14.03.03 20:47
Label1.ForeColor = QBColor(9) / QBColor = от 0 (чёрн.) до 15 (бел.)
Label1.FontBold = True
Label1.ForeColor = QBColor(0)
Label1.FontBold = False
Номер ответа: 5
Автор ответа:
Zeus
ICQ: 161801353
Вопросов: 63
Ответов: 220
Web-сайт:
Профиль | | #5
Добавлено: 14.03.03 21:02
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 15.03.03 04:06
Private WithEvents DemoLabel As Label
Property Let MkEqu(DemoLabel2 As Object)
Set DemoLabel = DemoLabel2
End Property
Form1.GetIndex DemoLabel.Name
End Sub
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Const SM_CXBORDER = 5
Private Const SM_CYBORDER = 6
Private Const SM_CYCAPTION = 4
Dim LabelEvent(4) As New Class1
For CreateLabels = 0 To 4
Set MyLabel(CreateLabels) = Me.Controls.Add("VB.Label", "Label" & LTrim(Str(CreateLabels + 1)), Me)
MyLabel(CreateLabels).Visible = True
MyLabel(CreateLabels).Caption = "CustomLabel-" & LTrim(Str(CreateLabels + 1))
MyLabel(CreateLabels).AutoSize = True
MyLabel(CreateLabels).Left = (ScaleWidth / 2) - (MyLabel(CreateLabels).Width / 2)
If CreateLabels > 0 Then MyLabel(CreateLabels).Top = MyLabel(CreateLabels - 1).Top + MyLabel(CreateLabels - 1).Height + (3 * Screen.TwipsPerPixelY) Else MyLabel(CreateLabels).Top = 10 * Screen.TwipsPerPixelY
LabelEvent(CreateLabels).MkEqu = MyLabel(CreateLabels)
Next CreateLabels
End Sub
TitleHeight = GetSystemMetrics(SM_CYCAPTION) + 2
MeBorderWidth = GetSystemMetrics(SM_CXBORDER)
MeBorderHeight = GetSystemMetrics(SM_CYBORDER)
Dim CursorPoint As POINTAPI
Call GetCursorPos(CursorPoint)
LabelTop = MeBorderHeight + TitleHeight + ((Me.Top + MyLabel(CurrentIndex).Top) / TPY)
LabelRight = LabelLeft + (MyLabel(CurrentIndex).Width) / LPX
LabelBottom = LabelTop + (MyLabel(CurrentIndex).Height / TPY)
Timer1.Interval = 0: Timer1.Tag = -1
ClearSelection
MousePointer = 0
End If
End Sub
Sub GetIndex(LabelName As String)
For GetLblIndex = 0 To 4
If MyLabel(GetLblIndex).Name = LabelName Then Exit For
Next GetLblIndex
If Timer1.Tag <> GetLblIndex Then
ClearSelection
MyLabel(GetLblIndex).BackColor = QBColor(1): MyLabel(GetLblIndex).ForeColor = QBColor(15)
Timer1.Tag = GetLblIndex
Timer1.Interval = 10
MousePointer = 14
End If
Sub ClearSelection()
For ClearAll = 0 To 4
MyLabel(ClearAll).BackColor = Me.BackColor
MyLabel(ClearAll).ForeColor = Me.ForeColor
Next ClearAll
End Sub
Номер ответа: 7
Автор ответа:
maxcs
Вопросов: 2
Ответов: 7
Профиль | | #7
Добавлено: 15.03.03 14:39
Номер ответа: 8
Автор ответа:
maxcs
Вопросов: 2
Ответов: 7
Профиль | | #8
Добавлено: 15.03.03 15:19
Вариант CyRax'a Работает и выглядит прикольно, но мне неохота копаться в своей проге, чтоб этот код туда всунуть, да и времени нет.
Номер ответа: 9
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #9
Добавлено: 15.03.03 15:59