Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2008, 16:35   #1
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
Вопрос Вывод БД в TreeView?

Доброе время суток!
Необходим простой пример отображения БД MS SQL в TreeView (без батончика, TreeView загружается вместе с формой).
Допустим я создал простую базу:
TableTema:
-ID
-Tema

TableRazdel:
-ID
-IDTema
-Razdel

TableQuestion:
-ID
-IDRazdel
-Question
-Answer

Как эту базу отобразить в дереве? Если можно - прям по шагам. Сколько материала перерыл, но практически везде впечатление, что речь обращена к сведущим, но еще не совершенным в этом деле. :-(

Последний раз редактировалось Snegovik; 26.09.2008 в 22:29.
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 11:41   #2
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
По умолчанию

Ну неужели никто не может сказать как это делается?
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 13:15   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Просто не хочется повторяться.
Вам ведь лень набрать в строке поиска по форуму "treeview"...
Если сможете усмирить свою гордыню, добавьте в условия поиска еще и мой ник - я не слишком давно давал полный код этого дела какой-то девушке.
Так что все на форуме уже давно есть.
mihali4 вне форума Ответить с цитированием
Старый 27.09.2008, 14:07   #4
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
По умолчанию

Я и поиск рассматривал, в том числе и ваш ответ девушке (с ссылкой на какой то dfaq) . Только один пень все равно ничего не понял, о чем и написал в сообщении (да и поместил специально как "чайник" в раздел для студентов).
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 15:09   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Snegovik Посмотреть сообщение
Я и поиск рассматривал, в том числе и ваш ответ девушке (с ссылкой на какой то dfaq) . Только один пень все равно ничего не понял, о чем и написал в сообщении (да и поместил специально как "чайник" в раздел для студентов).
Ну, уж подробнее, чем я с девушкой общался, я не могу...
Это ведь не чат. Сложного там ничего нет, нужно просто сесть и разобраться...
Да, кстати, исходники "какого-то dfaq" выложены для всех желающих в теме:
http://www.programmersforum.ru/showt...highlight=dfaq
mihali4 вне форума Ответить с цитированием
Старый 27.09.2008, 15:22   #6
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
По умолчанию

mihali4 я согласен, это не чат. Тогда вы не возразите, если я по ходу кода вопросы позадаю? Первый вопрос: "procedure Tfmain.GetTree;" - как образуется? Ну я не знаю: это свойство компонента или еще что?
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 15:41   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
"procedure Tfmain.GetTree;" - как образуется?
Это "ручная" процедура. То есть "автоматом" (щелчком мышкой по чему-нибудь) остов для нее не создать - она пишется вручную.
Давайте с вами напишем для вашей программы такую процедуру:
1. Объявим ее и разместим объявление в том же разделе, где у вас, наверное, уже есть строка
procedure Button1Click(Sender: TObject);
(это все в разделе объявления формы:
type
TForm1 = class(TForm)
...)
Наша, добавляемая строка, будет похожа:
procedure PrivetVasePupkinu;
Только параметров у нее нет. Это то, что в скобках.
2. Объявили, теперь нужно ее описать. Где-нибудь среди других процедур выбираем любое местечко, вклиниваемся и пишем ручками:
procedure TForm1.PrivetVasePupkinu;
begin
ShowMessage('Вася, прювет!');//вот это мы добавили
end;
Готово - объявили и прописали. А красным - указали явно принадлежность к нашей форме.
3. Но ведь просто так она будет сидеть и молчать... Значит, ее нужно вызвать. Как? Ну, например, добавим на форму кнопку Button2, дважды шлепнем по ней мышкой и в образовавшийся "автоматом" скелет допишем:
procedure TForm1.Button2Click(Sender: TObject);
begin
PrivetVasePupkinu;//это дописали
end;
Теперь при нажатии на Button2 будет исполняться наша процедура, которую мы создали вручную.
Ну, а вызывать ее можно не только кнопкой, а из любого места кода программы...

Зачем это нужно? Для сокращения длины кода, например. Предположим, что у вас два десятка кнопок на форме и вы хотите, чтобы нажатии на любую кнопку у вас Label1 менял шрифт на красный (если он черный) и наоборот.
Варианта два - либо такое прописывать в обработчиках клацания у всех кнопок, либо "вынести во внешнюю процедуру" .
То есть создать процедуру:
procedure TForm1.ChangeLabelColor;
begin
if Label1.Font.Color=clRed then
Label1.Font.Color:=clBlack else
Label1.Font.Color:=clRed;
end;
И теперь уже не эти три строки вставлять в обработчиках для кнопок, а только одну - ChangeLabelColor;
Самое классное, что такую процедуру можно сделать так, чтобы она распознавала, какая именно кнопка нажата. Но это - другой разговор.

Последний раз редактировалось mihali4; 27.09.2008 в 15:52.
mihali4 вне форума Ответить с цитированием
Старый 27.09.2008, 16:36   #8
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
По умолчанию

michli4, благодарю, что не отказались помочь!
Доступно объяснили, спасибо! Я решил по новому "запустить" код и сразу вопросы:
1.MyRecPtr: PMyRec; -- ругается что неописанный идентификатор
2.TQuest -- это ADOQuery
3.TTema, TRazdel -- это я так понимаю ADOTable
4.MyRecPtr -- о сущности этого элемента совсем ничего не понял

Последний раз редактировалось Snegovik; 27.09.2008 в 16:40.
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 16:42   #9
Snegovik
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 16
По умолчанию

Может я ошибаюсь, нужно что то добавить в раздел uses, сразу после inteface?
Snegovik вне форума Ответить с цитированием
Старый 27.09.2008, 17:22   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Я решил по новому "запустить" код
MyRecPtr: PMyRec; -- ругается что неописанный идентификатор
Чей код?
MyRecPtr: PMyRec; Вот как раз этот вопрос я девушке подробно разъяснял. Не сочтите за труд посмотреть тот топик.
Вообще, это проще простого! Общий подход - копируем имя идентификатора и делаем поиск по нему в моей программе. Смотрим, как и где он объявляется, какие делаются подготовительные действия (если они нужны), какими способами он используется.
ADO у меня не используется. Запустите ехе-шник - программу из архива, почитайте файл помощи и многое станет ясно.

Последний раз редактировалось mihali4; 27.09.2008 в 22:49.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TreeView и БД Constellation БД в Delphi 12 27.09.2008 15:22
TreeView _SERGEYX_ Общие вопросы Delphi 1 01.09.2008 17:29
Treeview forzi Помощь студентам 4 04.05.2008 23:50
Опять TreeView Simply-Art Компоненты Delphi 2 20.07.2007 17:14