LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Два списк...
 Тема: Два списка
 
 15.06.2007 21:02:32
Valerik
14 сообщения


Тема: Два списка
Помогите, пожалуйста, вот в каком вопросе:
Решил сделать форму для удобного управления справочниками, которые представляют из себя обыкновенные двухуровневые списки. При изменении названия справочника (Me.Справочник - поле со списком) в списке верхнего уровня (UpLevel) выводятся все рубрики верхнего уровня из этого справочника, и подсвечивается выделением первый элемент. Затем проверяется есть ли у этого элемента дочки и они выводятся в другом списке (DownLevel). Аналогично - подсвечивается первый элемент. Так в теории. Но действительность еще кошмарней :[ ]
При изменении справочника - все работает на ура. Формируются оба списка и выделяются первые элементы. А вот если кликнуть мышью в элемент в списке верхнего уровня, то начинаются чудеса: если дочек нет, то все в порядке, а вот если у этого элемента есть дочки, то все контролы на форме перестают реагировать на события от мыши (кроме самого списка верхнего уровня). Точнее по клику в любой контрол вызывается все тот же UpLevel_Click(). И так продолжается до тех пор, пока в этом самом списке верхнего уровня не выбрать элемент, у которого нет дочек. Уфф-ф.
В общем уже четыре дня возвращаюсь к этому вопросу и ничего не могу придумать. Проблема заключается в закомментированных строчках но как быть..?

Private Sub UpLevel_Click()

J = Me![UpLevel].ListIndex
If J >= 0 Then
StrSQL = ""
StrSQL = "SELECT [" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(2).Name + "], [" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(0).Name + "] FROM [" + Me.Справочник + "] WHERE ((([" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(1).Name + "])=" + Me![UpLevel].Column(1, Str(J)) + ") AND (([" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(4).Name + "])=2));"
If StrSQL > "" Then
Me![DownLevel].RowSource = StrSQL
Me![AddLevelDown].Enabled = True
J = Me![DownLevel].ListCount
If J > 0 Then
Me![DelLevelDown].Enabled = True
' Me![DownLevel].Selected(J - 1) = True
' Me![DownLevel].Selected(0) = True
Else
Me![DelLevelDown].Enabled = False
End If
Else
Me![AddLevelDown].Enabled = False
End If
End If

End Sub

Private Sub Справочник_Change()

StrSQL = ""
StrSQL = "SELECT [" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(2).Name + "], [" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(0).Name + "] FROM [" + Me.Справочник + "] WHERE ((([" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(1).Name + "])=0) AND (([" + Me.Справочник + "].[" + CurrentDb.TableDefs(Me.Справочник).Fields(4).Name + "])=2));"
If StrSQL > "" Then
Me![UpLevel].RowSource = StrSQL
Me![AddLevelUp].Enabled = True
J = Me![UpLevel].ListCount
If J > 0 Then
Me![DelLevelUp].Enabled = True
Me![UpLevel].Selected(J - 1) = True
Me![UpLevel].Selected(0) = True
Else
Me![DelLevelUp].Enabled = False
End If
Call UpLevel_Click
Else
Me![AddLevelUp].Enabled = False
End If

End Sub


P.S. Общий раздел по формам
Автор: Valerik от 02.06.2002 17:55:00 Источник ...
 15.06.2007 21:02:32
All
4316 сообщения
1-ый


RE: Два списка
Посмотрите пример 2 файла la_form.mdb


P.S. Общий раздел по формам
Автор: Виктор Конюков от 0:00:00 Источник ...
 15.06.2007 21:02:32
Valerik
14 сообщения


RE: Два списка
Посмотрел, спасибо. Буду переделывать...
Но остался один небольшой вопрос. Если я программно выделяю какой-либо элемент в списке, предположим так:

Private Sub Button_Click()
Me![ИмяСписка].Selected(0) = True
End Sub,

то почему-то зажигается "Undo" на тулбаре с подсказкой "Восстановить текущее значение/запись".
Это так и должно быть? И как от этого избавиться?


P.S. Общий раздел по формам
Автор: Valerik от 08.06.2002 12:01:12 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Два списк...
ПоискПоиск  Список форумовСписок форумов  
right