Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: И снова списки
 
 автор: Гоблин   (12.11.2009 в 23:26)   личное сообщение
69 Кб.
 
 

Привет все. Вот на основе календаря делаю нечто. (макет формы записи).
1. Идея заключается в том, что при открытии формы все списки должны быть заблокированы. С этим проблем нет. При выборе дня должен разблокироваться соответствующий список, остальные заблокироваться. Вместе с тем и выделение если есть убираться. Постоянно выпадает ошибка с требованием сохранить изменения перед выполнением requery. Может refresh применить? Пришлось заремить массу строк.
2. Как поменять цвет соответствующего списка. Дату получилось условным, а со списком такое не прокатывает.
3. И вобще как на все это написать функцию. Чего-то функции не писал в модулях, а тут вроде созрел, а с чего начать? Уж больно много получается кода повтоять с небольшими изменениями. Там циклы что ли или чего как?

  Ответить  
 
 автор: Lukas   (13.11.2009 в 01:01)   личное сообщение
 
 

Бегло:
Для начала убрать из формы календарик и весь его код, что - бы не мешался.
Сделать поле даты и кнопку с вызовом календаря (примеры есть на сайте).
(Потом, по желанию, можно будет вернуть)

1. Снять выделение со списка можно проще - присвоить ему значение Null.
2. Цвет фона списка можно поменять изменив значение его BackColor свойства.
3. Вопрос не слишком конкретный, что бы дать на него осмысленный ответ.

Работать с некоторым количеством однотипных контролов удобно в цикле, при
условии задания им имен типа:
lbl1, lbl2, lbl3 ... lbl22
Обращаться тогда к контролам можно в цикле, например:

For i=1 To 22
    Me.Controls("lbl" & i).Visible=True
Next i

Имена контролов, форм, таблиц и др. надо давать на аглицком языке и осмысленные.


'Например одной процедурой изменять доступ и снимать выделение в 7 списках
Private Sub SetCurrentListBox(Index As Integer)
    Dim i As Integer
    For i = 1 To 7
        With Me.Controls("lst" & i)
            .Enabled = (Index = i)
            .Value = Null
        End With
    Next i
End Sub

'Вызов в процедуре после обновления поля текущей даты:
Call SetCurrentListBox(Weekday(Me.txtCurrentDate, vbMonday))

  Ответить  
 
 автор: Гоблин   (13.11.2009 в 21:53)   личное сообщение
89 Кб.
 
 

Лукас, спасибо за консультацию. Я уже чего-то сообразил. Осталось поработать над заполнением времени и дальше. .. Календарь такой специально выбран для наглядности.
Однако ваши инструкции применю обязательно. С циклами есть проблема. Мой пример - это лишь только черновик для просмотра что как будет выглядеть в базе. Спасибо еще раз.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList