powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TtreeNodes
25 сообщений из 65, страница 1 из 3
TtreeNodes
    #35054681
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую Народ!
Помогите понять -где туплю.
Хочу программно наполнить 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
TtreeNodes
    #35054696
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
...
Рейтинг: 0 / 0
TtreeNodes
    #35054707
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tosh1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
Ошибка :"Aссess violation at address"До цикла прога не доходит, на
tr.Add(tr.GetFirstNode,'All'); все умирает...
...
Рейтинг: 0 / 0
TtreeNodes
    #35054709
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk Tosh1. не получается это не описание ошибки или результата работы
2. Если запустить и пройтись дебаггером - цикл отрабатывает?
3. Да и вообще - а сами как проверяли и что делали?
Ошибка :"Aссess violation at address"До цикла прога не доходит, на
tr.Add(tr.GetFirstNode,'All'); все умирает...

Так нет у него первого Node. Если хочешь добавить как корневой
Код: plaintext
tr.Add( nil ,'All');
...
Рейтинг: 0 / 0
TtreeNodes
    #35054723
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TtreeNodes
    #35054733
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь, внимание, вопрос - как отработает этот кусок:
Код: 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
TtreeNodes
    #35054735
Ска
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk да и ф-я GetFirstNode-доб-ет первый nod
ну-ну...
само TreeView у тебя где ?
...
Рейтинг: 0 / 0
TtreeNodes
    #35054741
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Tosh:
Такая же ошибка...Да- почемуто "ААААА" не выскакивает ...мжт ProcessMessage воткнуть?
...
Рейтинг: 0 / 0
TtreeNodes
    #35054748
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты точно уверен, что весь код показал?
Код: 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
TtreeNodes
    #35054751
Ega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TTreeNodes maintains a list of tree nodes in a tree view control .

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

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

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

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

конечно условие выполняться не будет
...
Рейтинг: 0 / 0
TtreeNodes
    #35054777
Фотография FlyD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TtreeNodes
    #35054779
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TtreeNodes
    #35054787
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй
tr.AddChild(nil,'All');
...
Рейтинг: 0 / 0
TtreeNodes
    #35054788
Фотография FlyD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkКратко: Много форм(8), везде есть TreeView-чтоб по сто раз не запрашивать , раз создалт подставляешь когда угодно...
А если так: раз создал TreeView и отображаешь, когда и где угодно?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
TtreeNodes
    #35054793
Ega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TtreeNodes
    #35055008
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Ega
у меня не TreeView компонент , а AdvTreeComboBox.
Я хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...
...
Рейтинг: 0 / 0
TtreeNodes
    #35055021
Ega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkto Ega
у меня не TreeView компонент , а AdvTreeComboBox.
Я хотел зделать так: AdvTreeComboBox.Items:=tr(где будет находится дерево)...

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

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


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