Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

Сброс данных из базы в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
15-1165981717
Slider007
2006-12-13 06:48
2006.12.31
С днем рождения ! 13 декабря


2-1165852014
AlexanderMS
2006-12-11 18:46
2006.12.31
Проблемы с организацией класса.


15-1165953241
Kolan
2006-12-12 22:54
2006.12.31
Временно обзавелся 2м монитором.


2-1165839672
DDDDDD
2006-12-11 15:21
2006.12.31
TdxDBGrid - при входе в поле - не те данные


15-1165303847
Kerk
2006-12-05 10:30
2006.12.31
Сценарий телесериала "Бригада"