![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сброс данных из базы в TreeView [D7, XP]
Xmen © (2006-12-07 10:27:00)Добрый ден Мастера!
Делаю прогу для библиотеки. Кое что спланировал. Если есть опыт в этом деле дайте советы, с радостью приниму. Извените отвлёкся. При разработке проги мне нужно сделат картатеку. Хотел сделат как в проводнике сначала расположит буквы алфавита от "а" до "я" и потом из базы читателей филтром извлеч фамилии и писать в подходяшую поддеректорию. Например "и" писать "Иванов" "И.." а "с" "Сидоров" итп.
Для этого хотел исползовать TreeView, но уменя не получается. Хелп читал и пару примеров посмотрел(неподходили моиму случаю) но непонятно доконца. Как можно это сделать?
Xmen (2006-12-11 08:12:00) [1]Сделал вот так:
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;
А можете сказат как можно сделат так чтобы при выборе фамилия из списка вышлабы данные соответствующие данние к этой фамилии.
Xmen (2006-12-07 13:49:00) [2]:)
Просто понят хочу, и сделать.
Jeer (2006-12-07 13:32:00) [3]
> Германн © (07.12.06 13:30) [11]
>
> Это развод или что?
Это X-мэны сейчас такие - матрица-revolution не выгорело.
Германн (2006-12-07 13:30:00) [4]Это развод или что?
Xmen (2006-12-07 13:25:00) [5]Тепер мне надо сделать то что продумал сначала расположит буквы алфавита от "а" до "я" и потом из базы читателей филтром извлеч фамилии и писать в подходяшую поддеректорию. Например "и" писать "Иванов" "И.." а "с" "Сидоров" итп.
Как это сделать. Деректоря получается, акак тепер сделать поддеректорю. и туда писать фамилю из базы
Nodes := AddChild(TreeView1.Selected,DMLibrary.dstUser.fieldbyname('familiya').AsString);
так.
А как сделат алфавит, с помощю массива или др. способ есть. и писат туда из базы.
Xmen (2006-12-07 13:04:00) [6]поменял это на это и кое что получилось, спасибо
Nodes := Add(TreeView1.Selected,DMLibrary.dstUser.fieldbyname('imya').AsString);
Сергей М. (2006-12-07 12:49:00) [7]
> наверно в этой строке
Что значит "наверно" ? Удостоверься в этом ! Отладчик-то на что дан тебе ?
И если именно на этой, то это означает только одно - значение поле 'imya' в текущей записи в НД dstUser равно Null
Xmen (2006-12-07 12:43:00) [8]invalid variant operation
наверно в этой строке
Nodes := Add(TreeView1.Selected,DMLibrary.dstUser['imya'].AsString);
Сергей М. (2006-12-07 12:39:00) [9]
> неполучилось вышла ошибка
Какая ?
Xmen (2006-12-07 12:27:00) [10]Сделал базу с таблицами
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 © спосиба за статю почитаю.
И осталным тоже спасибо за помощ.
Amoeba (2006-12-07 10:53:00) [11]Рекомендую для начала прочесть эти статьи:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=850
iXT (2006-12-07 10:42:00) [12]
> но непонятно доконца
Что конкретно непонятно?
Sergey13 (2006-12-07 10:40:00) [13]> [0] Xmen (07.12.06 10:27)
Если не можешь разобраться с деревом.
1. Можно поискать готовые компоненты. Их немало.
2. Можно сделать похоже и без дерева.
В любом случае сначала надо спроектировать саму БД.
ЗЫ: Для библиотекаря у тебя просто офигительная грамотность. 8-)
Jeer (2006-12-07 10:31:00) [14]
> Как можно это сделать?
По всякому.
treenode := TreeView.Items.Add(nil, 'Root');
TreeView.Items.AddChild(treenode, 'Child1');
'Root' в твоем случае буквы
'child' - данные из базы