TreeView заполняет самостоятельно и вылетает Access - PullRequest
2 голосов
/ 21 января 2009

Моя проблема - это древовидное представление в моем приложении Access 2002.

Он уже заполнен, когда я открываю форму. Что странно, потому что единственный код, который добавляет узлы, привязан к кнопке.

Кроме того, отображается только часть данных, и при переключении между вкладками () данные в древовидном представлении дублируются / дублируются. Когда я нажимаю на любую другую вкладку, Access мгновенно падает, как * zap *

Может быть, нужно все время чистить дерево?

Любые другие идеи, в чем может быть проблема - решения также приветствуются;)

Cheers, Рамон

Ответы [ 5 ]

1 голос
/ 22 июня 2010

Я использую оболочку VCL (Delphi / BCB) в качестве элемента управления Tree View на вкладке (TTreeView на TPageControl).

Моя программа зависает, когда я вызываю TreeView1.Items.Clear. Но только в «определенных» случаях! Особенно, если я раскрываю элемент, а затем пытаюсь очистить () все элементы. Если я никогда не коснусь какого-либо узла (или только прокручиваю), это нормально.

Я обнаружил, что установка выбранного узла в NULL непосредственно перед вызовом Items.Clear разрешила его для меня.

Интересно, что вызов Clear () вызвал несколько событий OnChange по какой-то причине, чего не ожидалось (поскольку мы все равно удаляли все узлы!) ...

1 голос
/ 30 сентября 2009

Я столкнулся с этой проблемой и проследил ее до элемента управления древовидной структуры, который не похож на вкладку. Вам придется изменить дизайн формы, чтобы дерево не отображалось на вкладке.

Если он должен отображаться на вкладке, попробуйте .......

Размещение древовидной структуры за вкладкой. Установка фона вкладки управления транспарантом. При событии «При изменении» элемента управления вкладкой найдите, чтобы проверить, какая вкладка выбрана. Если это вкладка, которую вы хотите, то установите древовидную структуру на visbale, если нет, то скройте ее

0 голосов
/ 21 января 2014

Я не могу поверить, что эта проблема все еще сохраняется, и Microsoft не опубликовала никаких исправлений! Я столкнулся с такой же проблемой в Windows 8.1 под управлением Office 2010

В любом случае, самый простой обходной путь, которого я достиг (и который, вероятно, экономит ресурсы), заключался в построении TreeView текущей активной вкладки в форме «On Current Event».

Private Sub Form_Current()
    Select Case Me.tabCompany.Value 'Return Page Index of active page
        Case 0  ' Page Index for Page 1.
            Call TVPage1
        Case 1  ' Page Index for Page 2.
            Call TVPage2
    End Select
End Sub

Еще одна вещь, о которой следует помнить, это запустить ту же процедуру для обновления TreeView при переключении с одной страницы на другую в «Событии изменения» на вкладке:

Private Sub tabCompany_Change()
    Select Case Me.tabCompany.Value 'Return Page Index of active page
        Case 0  ' Page Index for Page 1.
            Call TVPage1
        Case 1  ' Page Index for Page 2.
            Call TVPage2
    End Select
End Sub

ура!

0 голосов
/ 22 января 2009

спасибо за ваши предложения.

Я до сих пор не выяснил, почему данные загружаются в TreeView, но я нашел решение.

Сначала я начал очищать TreeView при загрузке формы.
Это действительно принесло пользу стабильности. Теперь можно нажимать без сбоев Access.

Когда данные загружаются в TreeView, старое поведение снова появляется. Переключение между вкладками добавляет больше данных и, наконец, приводит к сбою Access.

Кажется, что TreeView (версия 6.0) перестраивается без надлежащей очистки.
Исходя из этого предположения, теперь я очищаю и перестраиваю TreeView при переключении на вкладку с содержанием.

Я все еще интересуюсь основной причиной, но она работает сейчас.

Еще раз спасибо, Рамон

0 голосов
/ 22 января 2009

Во-первых, выясните, почему TreeView загружается, если вы еще этого не сказали. Шаг через ваш код. Вы должны решить это в первую очередь.

Во-вторых, происходит ли сбой формы, если вы не загружаете TreeView, но переключаете вкладки?

...