Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TtreeNodes / 25 сообщений из 65, страница 1 из 3
11.01.2008, 08:41
    #35054681
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Приветствую Народ!
Помогите понять -где туплю.
Хочу программно наполнить TtreeNodes, не получается...делаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
tr: TTreeNodes;

tr:=ttreeNodes.Create( nil );
       tr.Add(tr.GetFirstNode,'All');
              dm.oq.Close;
              dm.oq.SQL.Text:='select t.field from table';
              dm.oq.Open;

                dm.oq.First;
                 while   not  dm.oq.Eof   do 
                 begin 
                  tr.AddChild(it.getFirstChild,dm.oq.Fields[ 0 ].AsString);
                  dm.oq.Next;
                 end ;
Спасибо
...
Рейтинг: 0 / 0
11.01.2008, 08:49
    #35054696
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
...
Рейтинг: 0 / 0
11.01.2008, 08:52
    #35054707
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Tosh1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
Ошибка :"Aссess violation at address"До цикла прога не доходит, на
tr.Add(tr.GetFirstNode,'All'); все умирает...
...
Рейтинг: 0 / 0
11.01.2008, 08:54
    #35054709
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvk Tosh1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
Ошибка :"Aссess violation at address"До цикла прога не доходит, на
tr.Add(tr.GetFirstNode,'All'); все умирает...

Так нет у него первого Node. Если хочешь добавить как корневой
Код: plaintext
tr.Add( nil ,'All');
...
Рейтинг: 0 / 0
11.01.2008, 09:02
    #35054723
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Naf wellvk Tosh1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
Ошибка :"Aссess violation at address"До цикла прога не доходит, на
tr.Add(tr.GetFirstNode,'All'); все умирает...

Так нет у него первого Node. Если хочешь добавить как корневой
Код: plaintext
tr.Add( nil ,'All');

Результат тот же , да и ф-я GetFirstNode-доб-ет первый nod
...
Рейтинг: 0 / 0
11.01.2008, 09:07
    #35054733
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
А теперь, внимание, вопрос - как отработает этот кусок:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
tr: TTreeNodes;

tr:=ttreeNodes.Create( nil );
 If   not  Assigned(tr)  Then 
  Showmessage('AAAAAAAAAAAAAAAA');
       tr.Add(tr.GetFirstNode,'All');
              dm.oq.Close;
              dm.oq.SQL.Text:='select t.field from table';
              dm.oq.Open;

                dm.oq.First;
                 while   not  dm.oq.Eof   do 
                 begin 
                  tr.AddChild(it.getFirstChild,dm.oq.Fields[ 0 ].AsString);
                  dm.oq.Next;
                 end ;

...
Рейтинг: 0 / 0
11.01.2008, 09:08
    #35054735
Ска
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvk да и ф-я GetFirstNode-доб-ет первый nod
ну-ну...
само TreeView у тебя где ?
...
Рейтинг: 0 / 0
11.01.2008, 09:12
    #35054741
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
to Tosh:
Такая же ошибка...Да- почемуто "ААААА" не выскакивает ...мжт ProcessMessage воткнуть?
...
Рейтинг: 0 / 0
11.01.2008, 09:15
    #35054748
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Ты точно уверен, что весь код показал?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
tr: TTreeNodes;

tr:=ttreeNodes.Create( nil );
       tr.Add(tr.GetFirstNode,'All');
              dm.oq.Close;
              dm.oq.SQL.Text:='select t.field from table';
              dm.oq.Open;

                dm.oq.First;
                 while   not  dm.oq.Eof   do 
                 begin 
                  tr.AddChild(it.getFirstChild,dm.oq.Fields[ 0 ].AsString);  //что такое it? откуда она взялась? и чему равна? 
                  dm.oq.Next;
                 end ;
...
Рейтинг: 0 / 0
11.01.2008, 09:17
    #35054751
Ega
Ega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
TTreeNodes maintains a list of tree nodes in a tree view control .

Нахрена ты TTreeNodes создаёшь????
...
Рейтинг: 0 / 0
11.01.2008, 09:21
    #35054761
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Ega TTreeNodes maintains a list of tree nodes in a tree view control .

Нахрена ты TTreeNodes создаёшь????
Для того чтобы вставить данные в визуальный компонент.
Кратко: Много форм(8), везде есть TreeView-чтоб по сто раз не запрашивать , раз создалт подставляешь когда угодно...
...
Рейтинг: 0 / 0
11.01.2008, 09:26
    #35054771
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvk Ega TTreeNodes maintains a list of tree nodes in a tree view control .

Нахрена ты TTreeNodes создаёшь????
Для того чтобы вставить данные в визуальный компонент.
Кратко: Много форм(8), везде есть TreeView-чтоб по сто раз не запрашивать , раз создалт подставляешь когда угодно...

и имеешь утечку памяти тех TreeNodes которые имел TreeView при создании?
...
Рейтинг: 0 / 0
11.01.2008, 09:27
    #35054774
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Код: plaintext
1.
tr:=ttreeNodes.Create( nil );
 If   not  Assigned(tr)  Then 

конечно условие выполняться не будет
...
Рейтинг: 0 / 0
11.01.2008, 09:28
    #35054777
FlyD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
F1 Create constructor (TTreeNodes)After calling the inherited constructor, Create sets the Owner property of the tree nodes object to the value of the AOwner parameter.
Если по исходникам.
Код: plaintext
1.
2.
3.
4.
5.
 constructor  TTreeNodes.Create(AOwner: TCustomTreeView);
 begin 
   inherited  Create;
  FOwner := AOwner;  // у вас здесь nil 
 end ;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 function  TTreeNodes.Add(Sibling: TTreeNode;  const  S:  string ): TTreeNode;
 begin 
  Result := AddNode( nil , Sibling, S,  nil , naAdd);
 end ;

 function  TTreeNodes.AddNode(Node, Relative: TTreeNode;  const  S:  string ;
  Ptr: Pointer; Method: TNodeAttachMode): TTreeNode;
 const 
  cAddMode:  array  [TNodeAttachMode]  of  TAddMode =
    (taAdd, taAddFirst, taAdd, taAddFirst, taInsert);
 var 
  Item, ItemId: HTreeItem;
  Parent: TTreeNode;
  AddMode: TAddMode;
 begin 
   // what are we trying to add? 
   if  Node =  nil   then 
    Result := Owner.CreateNode  // Owner все еще nil 
...................
 end ;
И т.д.

ИМХО. Меняйте логику.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.01.2008, 09:29
    #35054779
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Naf
Код: plaintext
1.
tr:=ttreeNodes.Create( nil );
 If   not  Assigned(tr)  Then 

конечно условие выполняться не будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
tr: TTreeNodes;

tr:=ttreeNodes.Create( nil );
       tr.AddFirst(tr.GetFirstNode,'All');
              dm.oq.Close;
              dm.oq.SQL.Text:='select t.field from table';
              dm.oq.Open;

                dm.oq.First;
                 while   not  dm.oq.Eof   do 
                 begin 
                  tr.AddChild(tr.getFirstChild,dm.oq.Fields[ 0 ].AsString);
                  dm.oq.Next;
                 end ;
первоначально
...
Рейтинг: 0 / 0
11.01.2008, 09:32
    #35054787
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
пробуй
tr.AddChild(nil,'All');
...
Рейтинг: 0 / 0
11.01.2008, 09:32
    #35054788
FlyD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvkКратко: Много форм(8), везде есть TreeView-чтоб по сто раз не запрашивать , раз создалт подставляешь когда угодно...
А если так: раз создал TreeView и отображаешь, когда и где угодно?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.01.2008, 09:35
    #35054793
Ega
Ega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvk Ega TTreeNodes maintains a list of tree nodes in a tree view control .

Нахрена ты TTreeNodes создаёшь????
Для того чтобы вставить данные в визуальный компонент.
Кратко: Много форм(8), везде есть TreeView-чтоб по сто раз не запрашивать , раз создалт подставляешь когда угодно...

Я понимаю, что их вставить надо.
Я не прнимаю, нахрена ты их создаёшь?

Код: plaintext
1.
2.
3.
4.
5.
 procedure  AddNodes(tn : TTreeNodes);
 begin 
   if   not  Assigned(tn)  then  Exit;
  .......
 end ;
и вызывай её потом

Код: plaintext
AddNodes(TreeView1.Items);
...
Рейтинг: 0 / 0
11.01.2008, 10:44
    #35055008
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
to Ega
у меня не TreeView компонент , а AdvTreeComboBox.
Я хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...
...
Рейтинг: 0 / 0
11.01.2008, 10:47
    #35055021
Ega
Ega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvkto Ega
у меня не TreeView компонент , а AdvTreeComboBox.
Я хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...

И что произойдёт с native AdvTreeComboBox.Items?
...
Рейтинг: 0 / 0
11.01.2008, 10:48
    #35055029
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvkЯ хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...
Прости, но за такое надо руки отрывать по колено ... низя так делать никогда
...
Рейтинг: 0 / 0
11.01.2008, 10:52
    #35055045
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Tosh wellvkЯ хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...
Прости, но за такое надо руки отрывать по колено ... низя так делать никогда
Поясните, почему отрывать?
Я так делал для Combobox,ListBox...-без проблем.
...
Рейтинг: 0 / 0
11.01.2008, 10:55
    #35055053
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
Дело в том, что это managed свойства - их жизненный цикл управляется контролом (в том числе и освобождение памяти). Если ты подменишь значения другим объектом - тогда неизвестно кода денется старый объект (бедт висеть в памяти до посинения) и, в какой-то момент времени, какой-нить из контролов просто уничтножит твой объект при совем уничтожении.
Как тебе такая перспектива? :)
...
Рейтинг: 0 / 0
11.01.2008, 10:57
    #35055062
Ega
Ega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
wellvk Tosh wellvkЯ хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...
Прости, но за такое надо руки отрывать по колено ... низя так делать никогда
Поясните, почему отрывать?
Я так делал для Combobox,ListBox...-без проблем.

Если ты раньше забивал гвозди жестким диском и СD-приводом, то поверь, не стоит также забивать гвозди материнской платой.
...
Рейтинг: 0 / 0
11.01.2008, 11:14
    #35055150
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TtreeNodes
ToshДело в том, что это managed свойства - их жизненный цикл управляется контролом (в том числе и освобождение памяти). Если ты подменишь значения другим объектом - тогда неизвестно кода денется старый объект (бедт висеть в памяти до посинения) и, в какой-то момент времени, какой-нить из контролов просто уничтножит твой объект при совем уничтожении.
Как тебе такая перспектива? :)
как я понимаю: создается объект(ttreeNodes) у него есть сво-во Item , где хранятся Node, под это дело выделяется память,не котролом, затем я говорю контролу AdvTreeComboBox, что узлы лежат там-то, и контрол присваивает себе этот кусок памяти(или копирует в свои свойства ) и при закрытии приложения(уничтожения) удалят из памяти инфу, но уничтожением можно управлять.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TtreeNodes / 25 сообщений из 65, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]