Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: вопрос о цвете label Добавлено: 14.03.03 19:31  

Автор вопроса:  maxcs

в форме есть метка (label1), мне надо,чтобы при наведении на неё курсора мыши она меняла свой цвет на &H8000&, т.е. Label1.BackColor = &H8000&,
я делаю:

Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.BackColor = &H8000&
End Sub

а как теперь сделать, чтобы при выходе курсора за пределы  Label1 она меняла свой цвет на &H4000& ?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #1 Добавлено: 14.03.03 19:46

Не юзай MouseMove, юзай GetCursorPos!

Ответить

Номер ответа: 2
Автор ответа:
 maxcs



Вопросов: 2
Ответов: 7
 Профиль | | #2 Добавлено: 14.03.03 20:20

А где этот GetCursorPos и как им пользоваться?

Ответить

Номер ответа: 3
Автор ответа:
 maxcs



Вопросов: 2
Ответов: 7
 Профиль | | #3 Добавлено: 14.03.03 20:20

А где этот GetCursorPos и как им пользоваться?

Ответить

Номер ответа: 4
Автор ответа:
 &&&&M



Вопросов: 8
Ответов: 68
 Профиль | | #4 Добавлено: 14.03.03 20:47

Этот пример конечно не притиндует на то чтобы

называться идеальным но у меня работает нормально.

/пример:

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = QBColor(9)  / QBColor = от 0 (чёрн.) до 15 (бел.)
Label1.FontBold = True

End Sub

/реакция на выход за пределы Label

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = QBColor(0)
Label1.FontBold = False

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Zeus



ICQ: 161801353 

Вопросов: 63
Ответов: 220
 Web-сайт: apirussia.by.ru
 Профиль | | #5
Добавлено: 14.03.03 21:02

А как по мне, так лучше бы с GetCursorPos...(это такая апи функция)

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 15.03.03 04:06

Держи, специально для тебя сделал.

'''Модуль класса (Class1)
Private WithEvents DemoLabel As Label
Property Let MkEqu(DemoLabel2 As Object)
Set DemoLabel = DemoLabel2
End Property

Sub DemoLabel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
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 Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Const SM_CXBORDER = 5
Private Const SM_CYBORDER = 6
Private Const SM_CYCAPTION = 4

Private MyLabel(4) As VB.Label
Dim LabelEvent(4) As New Class1

Private Sub Form_Load()
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

Private Sub Timer1_Timer()
TitleHeight = GetSystemMetrics(SM_CYCAPTION) + 2
MeBorderWidth = GetSystemMetrics(SM_CXBORDER)
MeBorderHeight = GetSystemMetrics(SM_CYBORDER)

CurrentIndex = Val(Timer1.Tag)
Dim CursorPoint As POINTAPI
Call GetCursorPos(CursorPoint)

TPY = Screen.TwipsPerPixelY: LPX = Screen.TwipsPerPixelX

LabelLeft = 1 + MeBorderWidth + (Me.Left + MyLabel(CurrentIndex).Left) / LPX
LabelTop = MeBorderHeight + TitleHeight + ((Me.Top + MyLabel(CurrentIndex).Top) / TPY)
LabelRight = LabelLeft + (MyLabel(CurrentIndex).Width) / LPX
LabelBottom = LabelTop + (MyLabel(CurrentIndex).Height / TPY)

If CursorPoint.X < LabelLeft Or CursorPoint.X > LabelRight Or CursorPoint.Y < LabelTop Or CursorPoint.Y > LabelBottom Then
 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

End Sub
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

2  CyRax: Вот наворотил! спасибо!

Да и ваще всем спасибо, что ламаков(вроде меня :--) не пинаете, щас все способы попробую, о результатах сообщу

Ответить

Номер ответа: 8
Автор ответа:
 maxcs



Вопросов: 2
Ответов: 7
 Профиль | | #8 Добавлено: 15.03.03 15:19

Попрбовал....
Вариант CyRax'a Работает  и выглядит прикольно, но мне неохота копаться в своей проге, чтоб этот код туда всунуть, да и времени нет.

Остановился на варианте, который предложил &&&&M-простой как три копейки, вписать в мою прогу-дело пяти секунд, заменил Label1.ForeColor на Label1.BackColor  и получил то, что нужно!

З.Ы. Ещё раз всем спасибо!

Ответить

Номер ответа: 9
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 15.03.03 15:59

Ничего дружище, я всё равно её на сайт отослал.

Не тебе, так кому-нибудь другому пригодится

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам