Приподнимающаяся кнопка (как сделать)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Приподнимающаяся кнопка (как сделать)

Сообщение Ruslan Demidow » 09.06.2004 (Ср) 11:30

Привет всем.
Есть чекбокс. Стиль установлен графический (чтобы выглядел как кнопка). Мне нужно чтобы визуально было три вида чекбокса при разных событиях.
1. Сброшен (это стандартное) - чекбокс плоский
2. Установлен (это стандартное) - чекбокс утоплен
3. Мышь над чекбоксом - чекбокс, если не сброшен, то приподнимается, как кнопка при наведении на неё мышки.
Вот сижу, думаю, как без лишнего геммороя это реализовать. Но никак не могу придумать, каким путём пойти.
Подскажите, плиз.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4160
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 09.06.2004 (Ср) 17:17

Сделай свой контрол на основе чекбокса.

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 09.06.2004 (Ср) 18:20

Да, без геморроя - никуда.. ;-)

CheckBox на форму, код внутрь:
Код: Выделить всё
Dim Checked As Boolean
Dim CheckNow As Boolean

Private Sub Check1_Click()

CheckNow = False
If Checked = False Then
    Me.Check1 = 1
    Checked = True
Else
    Me.Check1 = 0
    Checked = False
End If

End Sub

Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If CheckNow = True Then
    If Checked = True Then
        Check1_Click
        Checked = True
    End If
End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Checked = True Then
    Checked = False
    Check1_Click
Else
    Checked = True
    Check1_Click
End If

CheckNow = True

End Sub


Если CheckNow убрать, то некрасиво получается..

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 10.06.2004 (Чт) 10:40

Ага, спасибо.
А вот с лейблом, думаю будет геморойя побольше. :)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 11.06.2004 (Пт) 10:17

Да то же самое:

Код: Выделить всё
Dim Checked As Boolean
Dim CheckNow As Boolean

Private Sub Label1_Click()

CheckNow = False
If Checked = False Then
    Me.Label1.BackColor = &H8000000F
    Checked = True
Else
    Me.Label1.BackColor = &HFFFFC0
    Checked = False
End If

End Sub

Private Sub label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If CheckNow = True Then
    If Checked = True Then
        Label1_Click
        Checked = True
    End If
End If

End Sub

Private Sub Form_Load()

Me.Label1.BackColor = &HFFFFC0

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Checked = True Then
    Checked = False
    Label1_Click
Else
    Checked = True
    Label1_Click
End If

CheckNow = True

End Sub


Или ты её тоже "приподнимать" собрался? :-)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 11.06.2004 (Пт) 12:47

Да.
В общем идея такова.
Есть три лабела (Captions А/С/У).
При нажатии на один из лабелов я устанавливаю чекбоксы соотнесённые лабелам в Checked=1 (если не установлен) и Checed=0 (если установлен). В общем обычные чекбоксы.
Но...
Вся заковыка в том, если просто на форму положить чекбоксы и установить у них стиль "Графический", то при установке чекбокса буква (например А) получается обведённой рамкой (признак фокуса).
И буква этой рамкой обрезается. А мне это не нужно. Хочу, чтобы буква была видна полностью. Чекбоксы нужны определённого размера, который по ходу работы меняться не должен.
Поэтому и замутил с лабелами. :)
Вот так. Хотя сейчас попробую установить у тестового чекбокса свойство TabIndex=0. Посмотрю что выйдет.
В общем хочется сделать типа кнопки, но как бы фиксирующуюся.
Вот. :)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 11.06.2004 (Пт) 12:56

Ну а не проще после клика на чекбокс фокус куда-нибудь перевести?

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 11.06.2004 (Пт) 13:26

Scuder писал(а):Ну а не проще после клика на чекбокс фокус куда-нибудь перевести?


:oops: :oops: :oops:
Одна голова хорошо, а две - лучше!!!
Спасибо, как же это я сразу не додумался?
Ещё раз СПАСИБО.
Можно тему закрывать :)


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

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

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

    TopList  
cron