Форум: "Начинающим";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизСброс данных из базы в TreeView Найти похожие ветки
← →
Xmen (2006-12-07 10:27) [0]Добрый ден Мастера!
Делаю прогу для библиотеки. Кое что спланировал. Если есть опыт в этом деле дайте советы, с радостью приниму. Извените отвлёкся. При разработке проги мне нужно сделат картатеку. Хотел сделат как в проводнике сначала расположит буквы алфавита от "а" до "я" и потом из базы читателей филтром извлеч фамилии и писать в подходяшую поддеректорию. Например "и" писать "Иванов" "И.." а "с" "Сидоров" итп.
Для этого хотел исползовать TreeView, но уменя не получается. Хелп читал и пару примеров посмотрел(неподходили моиму случаю) но непонятно доконца. Как можно это сделать?
← →
Jeer © (2006-12-07 10:31) [1]
> Как можно это сделать?
По всякому.
treenode := TreeView.Items.Add(nil, "Root");
TreeView.Items.AddChild(treenode, "Child1");
"Root" в твоем случае буквы
"child" - данные из базы
← →
Sergey13 © (2006-12-07 10:40) [2]> [0] Xmen (07.12.06 10:27)
Если не можешь разобраться с деревом.
1. Можно поискать готовые компоненты. Их немало.
2. Можно сделать похоже и без дерева.
В любом случае сначала надо спроектировать саму БД.
ЗЫ: Для библиотекаря у тебя просто офигительная грамотность. 8-)
← →
iXT (2006-12-07 10:42) [3]
> но непонятно доконца
Что конкретно непонятно?
← →
Amoeba © (2006-12-07 10:53) [4]Рекомендую для начала прочесть эти статьи:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=850
← →
Xmen (2006-12-07 12:27) [5]Сделал базу с таблицами
1) User - читатели
2) Book - книги
3) Kartochka - формуляр читателя
В 1) базы есть поля фамили и по этому полю нужно создать картатеку, тоесть дерево.
кусок примера добовления значения поля в дерево, но неполучилось вышла ошибка.
procedure TFUserView.RefreshTree;
var Nodes : TTreeNode;
begin
DMLibrary.dstUser.Refresh;
with TreeView1.Items do
begin
BeginUpdate;
Clear;
DMLibrary.dstUser.First;
while not DMLibrary.dstUser.EOF do
begin
Nodes := Add(TreeView1.Selected,DMLibrary.dstUser["imya"].AsString);
DMLibrary.dstUser.Next;
end;
EndUpdate;
end;
end;
Jeer © можеш еще дополнить свой пример.
Amoeba © спосиба за статю почитаю.
И осталным тоже спасибо за помощ.
← →
Сергей М. © (2006-12-07 12:39) [6]
> неполучилось вышла ошибка
Какая ?
← →
Xmen (2006-12-07 12:43) [7]invalid variant operation
наверно в этой строке
Nodes := Add(TreeView1.Selected,DMLibrary.dstUser["imya"].AsString);
← →
Сергей М. © (2006-12-07 12:49) [8]
> наверно в этой строке
Что значит "наверно" ? Удостоверься в этом ! Отладчик-то на что дан тебе ?
И если именно на этой, то это означает только одно - значение поле "imya" в текущей записи в НД dstUser равно Null
← →
Xmen (2006-12-07 13:04) [9]поменял это на это и кое что получилось, спасибо
Nodes := Add(TreeView1.Selected,DMLibrary.dstUser.fieldbyname("imya").AsString);
← →
Xmen (2006-12-07 13:25) [10]Тепер мне надо сделать то что продумал сначала расположит буквы алфавита от "а" до "я" и потом из базы читателей филтром извлеч фамилии и писать в подходяшую поддеректорию. Например "и" писать "Иванов" "И.." а "с" "Сидоров" итп.
Как это сделать. Деректоря получается, акак тепер сделать поддеректорю. и туда писать фамилю из базы
Nodes := AddChild(TreeView1.Selected,DMLibrary.dstUser.fieldbyname("familiya").AsString);
так.
А как сделат алфавит, с помощю массива или др. способ есть. и писат туда из базы.
← →
Германн © (2006-12-07 13:30) [11]Это развод или что?
← →
Jeer © (2006-12-07 13:32) [12]
> Германн © (07.12.06 13:30) [11]
>
> Это развод или что?
Это X-мэны сейчас такие - матрица-revolution не выгорело.
← →
Xmen (2006-12-07 13:49) [13]:)
Просто понят хочу, и сделать.
← →
Xmen (2006-12-11 08:12) [14]Сделал вот так:
procedure TFUserView.RefreshTree;
var Nodes : TTreeNode;
i : Integer;
abc:string;
begin
abc:="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЧШЭЮЯ";
with TreeView1.Items do
begin
BeginUpdate;
Clear;
for i := 1 to 28 do
begin
Nodes := Add(TreeView1.Selected,copy(abc,i,1));
with DMLibrary.qrUser do
begin
DisableControls;
if Active then Close;
Screen.Cursor := crHourGlass;
SQL.Clear;
SQL.Add(" SELECT * FROM user_lib");
SQL.Add(" WHERE familiya like """+copy(abc,i,1)+"%"+"""");
SQL.Add(" order by familiya");
SQL.SaveToFile("sql.txt");
try
Open;
except
ShowMessage("Ошибка выполнения запроса");
Screen.Cursor := crDefault;
exit;
end;
EnableControls;
Screen.Cursor := crDefault;
end;
DMLibrary.qrUser.Open;
DMLibrary.qrUser.First;
while not DMLibrary.qrUser.EOF do
begin
AddChildObject( Nodes,DMLibrary.qrUser.fieldbyname("familiya").AsString,nil);
DMLibrary.qrUser.Next;
end;
end;
EndUpdate;
end;
end;
А можете сказат как можно сделат так чтобы при выборе фамилия из списка вышлабы данные соответствующие данние к этой фамилии.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c