Два вопроса по CommandButton

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Два вопроса по CommandButton

Сообщение A.A.Z. » 06.08.2003 (Ср) 17:35

1. Есть кнопка Command1, на ней надпись "Надпись". При наведении (Command1_MouseMove) текст должен становиться подчёркнутым, при убирании мышки с кнопки, соответственно, обычным. Можно ли как-нибудь сделать это? :?:
2. Можно ли как-то изменить цвет текста на кнопке? :?:
Нет меня больше

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 06.08.2003 (Ср) 17:58

по поводу цвета вопросомне задовался, а вот вопросом изменения при наведении занимался. У меня может и не самый лучший метод, но всё-таки он есть.

Итак, создай приложение, создай в нём одну кнопку Command1 и таймер Timer1. Интервал таймера выставь к примеру 20, а свойство Enabled поставь в False. После этого скопируй следующий код:

Код: Выделить всё
'Положение курсора
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
Xms As Long 'координаты мыши по Х-у
Yms As Long 'координаты мыши по У-у
End Type
Private XmsA As Long
Private YmsA As Long


Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Command1.FontUnderline = True
        Dim cPos As POINTAPI
        GetCursorPos cPos
        XmsA = cPos.Xms
        YmsA = cPos.Yms
        Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
        Dim cPos As POINTAPI
        GetCursorPos cPos
        If cPos.Xms <> XmsA Then
            Timer1.Enabled = False
            Command1.FontUnderline = False
            Exit Sub
        End If
        If cPos.Yms <> YmsA Then
            Timer1.Enabled = False
            Command1.FontUnderline = False
            Exit Sub
        End If
End Sub


вроде при наведении должно подчёркиваться.
Ходит по лесу хомяк, хищный маленький дурак...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 06.08.2003 (Ср) 18:15

А-а-а, FontUnderline? :idea: Спасибо!
Код: Выделить всё
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Command1.FontUnderline = False Then Command1.FontUnderline = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X < Command1.Left Or X > Command1.Left + Command1.Width Or Y < Command1.Top And Y > Command1.Top + Command1.Height And Command1.FontUnderline = True Then Command1.FontUnderline = False
End Sub

Вот только жутко раздражают мелькания... :evil: :( Кстати, при таймере отсуствуют - так что вдвойне спасибо! :!:
P.S. Ещё одна прихоть - как сделать так, чтобы при нажатии шрифт становился жирным? если это засунуть в Command1_MouseDown - вообще фигня получается... :( :?:
Нет меня больше

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 06.08.2003 (Ср) 18:54

По поводу кода, который использовал ты. Он не является корректным по нескольким причинам:если ты резко соскочишь с выделенного обьекта за область формы, то выделение отсанится(не сработает Form_MouseMove), и тоже самое произойдёт если ты быстро(относительно) перенесёшь указатель на другой объект.
По поводу Shift, я не совсем понял. Т.е. ты хочешь что бы при наведении на кнопку если нажата клавиша Shift, текст на кнопке выделялся Жирным и подчёркивался?
Ходит по лесу хомяк, хищный маленький дурак...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 06.08.2003 (Ср) 19:51

A.A.Z. писал(а): ...при нажатии шрифт становился жирным...

[при нажатии] [шрифт (а не Шифт!) становился жирным...] :) :wink:
Если Button = 1, т.е. просто при щелчке левой кнопкой мыши!
В принципе, это не так уж и важно. Просто чтобы визуальный эффект был... :wink:
P.S. Интересно, есть ли в VB функция, чтобы Shift вдруг становился ЖИРНЫМ? :shock: :mrgreen: :lol:
Как представлю эту картину - мои Shift'ы резко жирнеют и соседние кнопки попросту вылетают из клавы на пол... :mrgreen: :lol:
Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 3

    TopList