|
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 16
|
|
treeviw в vb 200531.05.2010, 10:59. Показов 1956. Ответов 1
Метки нет (Все метки)
Всем привет, столкнулся с проблемой, не могу разобраться как работать с treeview в vb2005 смотрел в инете пробовал как писали не получалось vb выдавал ошибку, конкретно не могу разобраться как делать дочерние ключи. по заданию надо сделать программу которая создаёт биномиальную кучу(несколько биномиальных деревьев ключевые вершины которых соеденены) и проводит операции над ней, например: поиск минимума, удаление минимума, вставка элемента и объединение куч.
0
|
|
| 31.05.2010, 10:59 | |
|
Ответы с готовыми решениями:
1
SELECT * FROM tabl WHERE (ДатаВызова Between #21/04/2005# And #01/07/2005#); не работает Подключение к SQL server 2005 из vs 2005 Напечатайте календарь заданного месяца 2005 года, зная, что 1 января 2005 года — суббота |
|
13 / 13 / 0
Регистрация: 04.05.2009
Сообщений: 130
|
||||||||||||||||
| 31.05.2010, 12:54 | ||||||||||||||||
|
В учебнике Лукина нашёл про Treeview может быть поможет.
Заполняем TreeView в коде Предоставим пользователю нашего приложения возможность, запустив проект, са-мому заполнять произвольное дерево, причем так, как это делается в Редакторе вершин дерева. Для этого достаточно запрограммировать работу 4 кнопок, которые вы видите на Рис. 20.16. Все кнопки действуют по отношению к любой выделенной вершине и смысл их ясен без объяснений. Текстовое поле служит для ввода названия вершины. Но предварительно мы должны кое-что о дереве узнать. Сначала о терминологии. Вершина – человек. От человека тянутся вниз и направо ветки к его сыновьям (так называемые дочерние вершины – Child). По отношению к сыновьям родитель является родительской вершиной (Parent). Адам – корень. Нажимая в режиме проектирования кнопку Add Root, мы можем добавить к дереву сколько угодно корней. Братья по отноше-нию друг к другу называются Sibling. Свойства и методы дерева и вершин. Каждая вершина является объектом класса TreeNode. Каждая вершина обладает свойством – коллекцией Nodes – это дочерние вершины (только дочерние, без внуков, правнуков и более отдаленных потомков). Сколько вершин на дереве – столько и коллекций. Но некоторые коллекции – пустые (у кого-то нет детей). Каждый элемент коллекции – это тоже объект класса TreeNode, то есть вершина. Вот такая, довольно сложная, но стройная картина получа-ется. У каждой вершины есть метод Remove – он уничтожает вершину со всеми ее потомками. Есть свойство Parent – это родительская вершина. Каждую вершину можно выделить своим цветом фона (свойство BackColor) и цветом шрифта (свойство ForeColor). Метод Expand осуществляет нажатие на плюсик у вершины, то есть показывает ее дочерние вершины. Метод ExpandAll показывает не только дочерние вершины, но всех потомков. Также у вершины есть метод GetNodeCount, который сообщает нам количество вершин-потомков данной вершины. У метода есть булевский параметр: True указывает, что считать нужно всех потомков, False – только дочерние вершины. Методы Expand и ExpandAll, а также GetNodeCount есть и у дерева TreeView. Здесь True указывает, что считать нужно все вершины дерева, False – только корни. У дерева TreeView есть также свойство SelectedNode. Оно имеет своим значением выделенную вершину. Простой вариант программы. Создайте проект с TreeView, 4 кнопками и тексто-вым полем. TreeView не заполняйте, он должен до запуска проекта быть пустым. Введите в окно кода следующие 5 процедур. Сразу же оговорюсь, что текст процедур данного варианта максимально упрощен. Я жертвовал целесообразностью и надежностью ради понятности:
Первой выполняется процедура Form1_Load. В пустом дереве она создает вершину Адам. Смысла в этом нет, но мне так проще объяснять. Не надо сразу же нажимать на кнопку Удали. Поскольку кроме Адама других вершин на дереве нет, именно она и будет выбранной (выделенной темным цветом), а значит будет удалена процедурой Удали_Click. Дерево опустеет и дальше нам не с чем будет работать. Переименуйте эту вершину, набрав текст в текстовом поле и нажав кнопку Переименуй. Поскольку кроме Адама других вершин на дереве нет, именно она и будет выбранной, а значит будет переименована процедурой Переименуй_Click. Щелкните по кнопке Создай сына. Первым выполнится оператор Dim Вершина As New TreeNode(TextBox1.Text) Он создает объект Вершина класса TreeNode. Свойство Text этого объекта определяется значением параметра. У нас это текст в текстовом поле. Вторым выполнится оператор TV.SelectedNode.Nodes.Add(Вершина) Поскольку выделен Адам, то к коллекции Nodes его сыновей (пустой пока), добавля-ется только что созданная вершина, что вы и увидите сразу же на экране, щелкнув по появившемуся плюсику. Щелкните по кнопке Создай сына несколько раз. На экране вы увидите несколько сыновей Адама. Выделите одного из сыновей и щелкните по кнопке Создай сына. Теперь выделен сын и поэтому вершина будет добавлена к коллекции Nodes сына, а не Адама. На экране появится внук. Выделяя того или иного из сыновей или внуков, щелкайте по кнопке Создай сына, предварительно вводя разный текст в текстовое поле. Вы увидите, как на дереве появ-ляются внуки, правнуки и более отдаленные потомки. Кнопка Создай брата вроде бы ни к чему, и без нее все работает. Но она мне пригодилась для объяснения свойства Parent. Выделите одну из вершин (но не корень) и нажмите кнопку. В операторе TV.SelectedNode.Parent.Nodes.Add(Вершина ) мы видим вот что: TV.SelectedNode Выбранная вершина TV.SelectedNode.Parent Родитель выбранной вершины TV.SelectedNode.Parent.Nodes Коллекция сыновей родителя выбранной вершины, то есть братья выбранной вершины Надежный вариант программы. Наша программа делает далеко не все, что нужно, и совсем не предохранена от «неправильных» щелчков по кнопкам. Так, нам не удастся создать брата Адаму. Удалив Адама, мы окажемся не у дел. И так далее. Пишем надежный вариант программы:
Теперь разберем процедуру для кнопки Переименуй. Ее работа – ключ к пониманию работы других процедур. Переименовывать имеет смысл только тогда, когда дерево не пусто и когда на дереве имеется выделенная вершина. Оператор If в этой процедуре создан для обработки именно такой ситуации, и его можно перевести так: Если общее количество вершин дерева = 0, то Сообщай, что дерево пусто Иначе если не существует выбранной вершины, то Сообщай, что надо бы выбрать вершину Иначе Переименовывай вершину. Если объект не существует, то в VB говорят, что он «есть ничто», по-английски – Is Nothing Поэтому выражение TV.SelectedNode Is Nothing можно перевести, как «выбранная вершина есть ничто» или «выбранная вершина не существует». Логика остальных кнопок ясна из их кода. Кнопки Создай сына и Создай брата при пустом дереве добавляют корень, как я и хотел. Строка TV.Focus() возвращает фокус на дерево, что удобно, но не обязательно. В процедуре для кнопки Создай брата строка ElseIf TV.SelectedNode.Parent Is Nothing Then обрабатывает следующую ситуацию: Если у выбранной вершины не существует родителя, значит это корень, значит брат ему – тоже корень, значит создавать этого брата придется строкой TV.Nodes.Add(Вершина) В процедуре для кнопки Создай сына строка Вершина.Parent.Expand() избавляет от необходимости жать плюсик на родителе, чтобы увидеть только что созданного сына. Прочее. Теперь было бы неплохо, чтобы работа пользователя по созданию дерева не пропала даром, а для этого нужно дать ему возможность сохранить созданное дерево, а потом загрузить. Но это нетривиальная задача. Отложите ее на будущее. Я ее разбирать не буду, но идею ее решения вы можете почерпнуть в следующем подразделе. 20.8.3. Работаем с TreeView в коде Задача. Подсчитать, сколько человек в родословной имеют имя длиной в 4 буквы. Задача нетривиальная. Ведь программа должна пробежаться по всем вершинам, то есть по всем коллекциям вершин. Мы с вами пробежались разик по коллекции корней в процедуре Form1_Load в предыдущем подразделе. Но как заставить программу пере-прыгнуть от отца к сыну, затем к внуку и так далее на неизвестную глубину и там делать свое дело? Это вопрос. И здесь нам на выручку приходит рекурсия (15.9). Если вы не поняли, как она работает, сейчас самое время вернуться назад и разобраться, потому что иначе вы не поймете то, что написано дальше. Программа: Dim K As Integer = 0 'Счетчик 4-буквенных имен
Пояснения: Если объяснять подробно, то придется давать такое же длинное ступенчатое пояснение, как для факториала. Поясню коротко. Вот процедура Посчитай «входит» в какую-нибудь очередную вершину, которая является ее параметром. Цикл For Each Дочь In Вершина.Nodes заставляет ее для каждой своей дочерней вершины выполнить два оператора. Первый – If Len(Дочь.Text) = 4 Then K = K + 1 собственно выполняет весь подсчет, а именно, если имя дочери состоит из 4 букв, то увеличивает счетчик. Второй оператор Посчитай(Дочь) и есть главный инструмент рекурсии. Он заставляет VB посчитать дочь точно так же, как только что шел подсчет для ее родителя. Там VB обнаружит внуков и так, по механизму рекурсии, обежит всех потомков вершины безо всякой головной боли с нашей стороны. Чтобы просчитать все дерево, нам достаточно запустить процедуру Посчитай, па-раметром которой служила бы не вершина, а все дерево. Это мы как раз и делаем, щелчком по кнопке запуская процедуру Посчитай(TreeView1). Наиболее дотошные спросят: А почему я не написал заголовок так: Sub Посчитай(ByVal Вершина As TreeNode) Только потому, что TreeView не является объектом класса TreeNode. Пришлось объявлять вершину более общим классом..
0
|
||||||||||||||||
| 31.05.2010, 12:54 | |
|
Помогаю со студенческими работами здесь
2
vs 2005 2005 год из 2010 в 2005 VS 2005 и Framework 1.1 SQL 2005 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|