Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запрет выполнения (как скрыть и показать контрол)  (Прочитано 11877 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
yelis
Участник

ua
Offline Offline
Живи и дай жить ...


« : 11-09-2008 19:51 » 

Доброго здоровья, люди!
Помогите, пожалуйста, с задачкой.
На форме есть кнопка Command1, при нажатии на которую становится видимым фрейм-контейнер Frame1 с кнопками Command11, Command12 и т.д.
Есть также много других отдельных кнопок Command2, Command3, Command4, ... и др. элементов (текстовые поля, лэйблы и др.), при нажатии на которые фрейм-контейнер становится невидимым. Для этого используется следующий код:

Private Sub Command1_LostFocus()
  Frame1.Visible = False
End Sub

При этом фрейм-контейнер становится невидимым и при нажатии на кнопки, находящиеся в самом фрейме, и процедуры этих кнопок не выполняются.
Можно ли при использовании указанного кода как-то указать программе, что этот код не должен выполняться при нажатии на кнопки, находящиеся во фрейме-контейнере?
Спасибо.
« Последнее редактирование: 12-09-2008 04:31 от Алексей1153++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 12-09-2008 03:20 » 

прочитал... Логику не понял. Если кнопки невидимые - как ты их нажмёшь ?
Записан

HandKot
Молодой специалист

ru
Offline Offline

« Ответ #2 : 12-09-2008 04:00 » 

Цитата: yelis
Код:
Command1_LostFocus() 

при нажатии на кнопки

событие, отвечающее за нажатие кнопки, называется Command1_Click()

Цитата: Алексей1153++
прочитал... Логику не понял.
присоединяюсь

Что нужно сделать?
Записан

I Have Nine Lives You Have One Only
THINK!
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 12-09-2008 04:29 » 

Command1_LostFocus()
тут вообще не нужен, надо что то типа
Код:
Private Sub Command1_Click()
  Frame1.Visible = True
End Sub

Private Sub Command2_Click()
  Frame1.Visible = False
End Sub

Private Sub Command3_Click()
  Frame1.Visible = False
End Sub

Private Sub Command4_Click()
  Frame1.Visible = False
End Sub

а как обработать группу кнопок в бейсике я не помню ))
Записан

yelis
Участник

ua
Offline Offline
Живи и дай жить ...


« Ответ #4 : 12-09-2008 07:00 » 

Извините, поясняю.
Например, есть своя кнопка (Command1) выбора цвета (без использования CommonDiaog - цветов всего 7, т.к. больше нет необходимости). При нажатии на нее выпадает "менюшка" с массивом кнопкок разных цветов (это и есть фрейм-контейнер, содержащий кнопки). При нажатии на кнопку выбора цвета из этого "меню" цвет шрифта меняется на соответствующий.
Теперь такая ситуация. Если я вызвал нажатием Command1 "меню" выбора цвета, а потом передумал этот цвет менять, то при щелчке на любом другом элементе формы или на самой форме это "меню" должно исчезнуть (фрейм-контейнер становится невидимым). Я это делал указанным выше кодом, т.е. при потере фокуса кнопки Command1. Прописывать в каждую кнопку, не относящуюся к выбору цвета фразу фрейм.видимость = ложь не хочется, т.к. их много и растет при этом размер кода. А если использовать указаный мною код, то при нажатии кнопок выбора цвета цвет не выбирается, т.к. сам фрейм становится невидимым раньше, чем выполняется эта процедура.
Как указать в моем коде, что он не должен выполняться пр нажатии на кнопки из массива кнопок выбора цвета?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 12-09-2008 07:18 » 

во первый, код не так уж и растёт. Попробуй такие варианты:

1) в Click каждой кнопки во врейме напиши visible=true

2) в Command1_LostFocus()  определи , находится ли курсор над окном фрейма, если да - то покажи фрейм, если нет - скрой
   (соответственно, это делается, если фрейм есть вообще на экране - а то может он и не был ещё показан)
Записан

HandKot
Молодой специалист

ru
Offline Offline

« Ответ #6 : 12-09-2008 08:39 » 

примерно так
Код:
Private Sub CommandButton1_Click()
     Frame1.Visible = True
     Frame1.Top = CommandButton1.Top
     Frame1.Left = CommandButton1.Left
     
     CommandButton2.SetFocus        'кнопка на фрейме
     
End Sub


Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If X < 0 Or Y < 0 Then Frame1.Visible = False
End Sub
Записан

I Have Nine Lives You Have One Only
THINK!
yelis
Участник

ua
Offline Offline
Живи и дай жить ...


« Ответ #7 : 12-09-2008 19:30 » new

Спасибо!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #8 : 15-09-2008 04:32 » 

yelis
а почему бы не воспользоваться стандартным меню и открывать его по правой клавише мыши?
Записан

I Have Nine Lives You Have One Only
THINK!
Scania
Гость
« Ответ #9 : 25-09-2008 19:34 » 

Для обработки группы объектов можно использовать следующий код:

Private sub butvis (bt as boolean)
Command1.visible=bt
Command2.visible=bt
Command3.visible=not bt
Frame1.visible=bt
End sub
_________________________________________________________________________________________

Private sub Command5_Click ()
butvis true
End sub
_________________________________________________________________________________________

Private sub Command6_Click ()
butvis false
End sub

При нажатии Command5 элементы Command1, Command2 и Frame1 станут видимыми, а Command3 исчезнет, следовательно при нажатии Command6 будет полностью обратное действие. Размер общего кода программы значительно сокращается, очень удобный метод. Да-да Ага
« Последнее редактирование: 25-09-2008 19:36 от Scania » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 26-09-2008 03:11 » 

тоже выход, я примерно так делаю в VC тоже )
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines