Заполнение Treeview из запроса

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем Ayria, 24 янв 2011.

  1. Ayria

    Ayria Гость

    Здравствуйте, у меня вот какая проблема, мне надо заполнить дерево TreeView из запроса в с++ Builder 6
    Сам запрос

    Код (Text):
         
    select Главная_тема, Наименование, Текст
    FROM Тема
    GROUP BY Главная_тема, Наименование, Текст
    группировка идет по Главная_тема, потому что значение этого поля может повторяться и сгруппировались значения по одинаков, и потом что бы значение этого поля шло как родительские, а вот значение поля "Наименования" шло дочерним от каждого поля Главная_тема соответственно

    я думаю что наверно как то через Items надо будет, но я не знаю как правильно свойство прописать в скобках
    TreeView1->Items->Add();
     
  2. Sergei100

    Sergei100 Гость

    Приветствую.
    Как всё запущено... Я пошел по такому пути и вовремя понял, что это ложный путь.
    1) Надо правильно создать базу.
    Таблица:
    1.1__Главная_тема1
    2.2___________Наименование1
    3.3________________Текст1
    4.3________________Текст2
    ...3________________Текст...
    ...2___________Наименование2
    ...3________________Текст1
    ...3________________Текст2
    ...3________________Текст...
    ...2__________Наименование...
    ...3_______________Текст1
    ...3_______________Текст2
    ...4_______________Текст...
    ...1__Главная_тема2
    ...1__Главная_тема...
    Всё построено как в TreeView!

    2) Вносим содеожимое таблицы (база) в двухмерный массив, например Array2(Ni, Njd), (основа для заполнения TreeView). Всё так же построено как и в дереве:

    Array2(1, 1)=Главная_тема1; Array2(2, 1)=пробел; Array2(3, 1)=пробел;
    Array2(1, 2)=пробел; Array2(2, 2)=Наименование; Array2(3, 2)=пробел;
    Array2(1, 3)=пробел; Array2(2, 3)=пробел; Array2(3, 3)=Текст;

    3) Дальше - считаем ноды...

    Dim Array3() As String 'Создание одномерного массива дерева со значениями
    ReDim Array3(1 To Ni)
    Dim Array4() As String 'Создание одномерного массива дерева с нодом
    ReDim Array4(1 To Ni)
    For i = 1 To Ni
    For j = 1 To Njd
    If Array2(i, j) <> "" Then
    Array3(i) = Array1(i, j)
    If Array2(i, j) = -1 Then
    Array4(i) = "" 'Поправка для заголовка "Главная_тема..."
    End If
    If Array2(i, j) > -1 Then
    Array4(i) = Array2(i, j) 'Создание одномерного массива дерева с именем
    End If
    End If
    Next j
    Next i

    4) Дальше - Загружаем TreeView1

    For i = 1 To Ni
    If Array4(i) = "" Then
    UserForm1.TreeView1.Nodes.Add(, , "R." & (i - 1), Array3(i)).Expanded = False
    End If
    If Array4(i) <> "" Then
    UserForm1.TreeView1.Nodes.Add("R." & Array4(i), tvwChild, "R." & (i - 1), Array3(i)).Expanded = False
    End If
    Next i

    Вроде бы всё... Я так себе сделал - без проблем...
    А далее воткнёшься в другую проблемку: как правильно редактировать базу через TreeView, как сделать это универсальной функцией, чтобы не загромождаться. Над этим я пока работаю, времени не хватает программировать - это не моё, я - технолог.
     
  3. Ayria

    Ayria Гость

    я создала "конструктор", таблицу в приложении где все вносится, она связана с таблицей в базе, потом из этой таблицы идет выборка в дерево, так что мне редактирование таблицы через дерево не нужно, и не будет в этом проблемы
     
Загрузка...

Поделиться этой страницей