Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2013, 08:43   #1
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию ВОПРОС ПО TreeView

Не нашел в гугле ничего про этот вопрос.
Вот я добавляю узел
TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1')+' '+Ed3.Text);
а как получить абсолютный индекс и текст узла который только что был добавлен. в переменной I будет содержаться главный корень узлов
вот весь код
Код:
For i := TRV1.Items.Count-1 downto 0 do begin
        If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1') ,TRV1.Items.Item[i].Text)=0 then begin
          TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1')+' '+Ed3.Text);
          TRV1.Items.Item[I].Selected:=True;
          TexIni.WriteString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+inttostr(i)+'('+TRV1.Items.Item[I].Text+')', Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(TRV1.Selected.AbsoluteIndex)+'('+')]','MaxID:'+IntToStr(StrToInt(ED3.Text)+9));
        end;
      end;
от большего к меньшиму я выбрал потомучто мне нужна пройтись только по корням будущих узлов а их у меня 3 а так как в переменной i будет содержаться абсолютный индекс то этот способ пробежки идеальный но запись не идеальная так как в ключе не тот индекс содержиться и полностью ламает структуру. Мне нужно получить именно абсалютный индекс так как потом я будук нему обращаться
Alexandr17-10 вне форума Ответить с цитированием
Старый 22.08.2013, 08:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У-у какие сложности. AddChild функция, возвращающая указатель типа TTreeNode - это и есть вставленный ею узел.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2013, 09:12   #3
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Вот блин слушай спасибо тебе. А я считал что процедура как в листбоксе и т.п
Alexandr17-10 вне форума Ответить с цитированием
Старый 22.08.2013, 09:25   #4
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Код:
procedure TMain_Application.BTN4Click(Sender: TObject);
var i,i1:integer;
  TreeNode: TTreeNode;
  AddTreeNode:TTreeNode;
begin
  TRV1.SetFocus;
  If Length(ED3.Text) >0 then begin
    TexIni:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\Ðåäàêòîð Libx\Text.ini');
      For i := TRV1.Items.Count-1 downto 0 do begin
        If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1') ,TRV1.Items.Item[i].Text)=0 then begin
          AddTreeNode:=TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1')+' '+Ed3.Text);
          TRV1.Items.Item[I].Selected:=True;
          TexIni.WriteString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+inttostr(i)+'('+TRV1.Items.Item[I].Text+')', Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(AddTreeNode.AbsoluteIndex)+'('+AddTreeNode.text+')]','MaxID:'+IntToStr(StrToInt(ED3.Text)+9));
        end;
      end;
      TRV1.SetFocus;
      For i := TRV1.Items.Count-1 Downto 0 do begin
        For i1 := 1 to StrToInt(ED3.Text) do begin
          If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1') ,TRV1.Items.Item[i].Text)>0 then begin
            AddTreeNode:=TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text2')+' '+IntToStr(i1));
            TreeNode:=TRV1.Items.Item[i];
            while TreeNode.Parent <> nil do
              TreeNode:=TreeNode.Parent;
            TexIni.WriteString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+inttostr(TreeNode.Index)+'('+TreeNode.Text+')', Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(AddTreeNode.AbsoluteIndex)+'('+AddTreeNode.Text+')]',IntToStr(I1+9)+':');
          End;
        end;
      end;
      TRV1.FullExpand;
      Ed3.Text:='';
    TexIni.Free;
  end;
end;
Код:

[-->Libx-->0(Стр 1)-->2(Украинский)]
Main_Application-->TRV1-->Text<--Lines[3(Максимальное число CMP MaxID: 10)]=MaxID:19
Main_Application-->TRV1-->Text<--Lines[6(Текст: 1)]=10:
Main_Application-->TRV1-->Text<--Lines[7(Текст: 2)]=11:
Main_Application-->TRV1-->Text<--Lines[8(Текст: 3)]=12:
Main_Application-->TRV1-->Text<--Lines[9(Текст: 4)]=13:
Main_Application-->TRV1-->Text<--Lines[10(Текст: 5)]=14:
Main_Application-->TRV1-->Text<--Lines[11(Текст: 6)]=15:
Main_Application-->TRV1-->Text<--Lines[12(Текст: 7)]=16:
Main_Application-->TRV1-->Text<--Lines[13(Текст: 8)]=17:
Main_Application-->TRV1-->Text<--Lines[14(Текст: 9)]=18:
Main_Application-->TRV1-->Text<--Lines[15(Текст: 10)]=19:
[-->Libx-->0(Стр 1)-->1(Аглийский)]
Main_Application-->TRV1-->Text<--Lines[2(Максимальное число CMP MaxID: 10)]=MaxID:19
Main_Application-->TRV1-->Text<--Lines[4(Текст: 1)]=10:
Main_Application-->TRV1-->Text<--Lines[5(Текст: 2)]=11:
Main_Application-->TRV1-->Text<--Lines[6(Текст: 3)]=12:
Main_Application-->TRV1-->Text<--Lines[7(Текст: 4)]=13:
Main_Application-->TRV1-->Text<--Lines[8(Текст: 5)]=14:
Main_Application-->TRV1-->Text<--Lines[9(Текст: 6)]=15:
Main_Application-->TRV1-->Text<--Lines[10(Текст: 7)]=16:
Main_Application-->TRV1-->Text<--Lines[11(Текст: 8)]=17:
Main_Application-->TRV1-->Text<--Lines[12(Текст: 9)]=18:
Main_Application-->TRV1-->Text<--Lines[13(Текст: 10)]=19:
[-->Libx-->0(Стр 1)-->0(Русский)]
Main_Application-->TRV1-->Text<--Lines[1(Максимальное число CMP MaxID: 10)]=MaxID:19
Main_Application-->TRV1-->Text<--Lines[2(Текст: 1)]=10:
Main_Application-->TRV1-->Text<--Lines[3(Текст: 2)]=11:
Main_Application-->TRV1-->Text<--Lines[4(Текст: 3)]=12:
Main_Application-->TRV1-->Text<--Lines[5(Текст: 4)]=13:
Main_Application-->TRV1-->Text<--Lines[6(Текст: 5)]=14:
Main_Application-->TRV1-->Text<--Lines[7(Текст: 6)]=15:
Main_Application-->TRV1-->Text<--Lines[8(Текст: 7)]=16:
Main_Application-->TRV1-->Text<--Lines[9(Текст: 8)]=17:
Main_Application-->TRV1-->Text<--Lines[10(Текст: 9)]=18:
Main_Application-->TRV1-->Text<--Lines[11(Текст: 10)]=19:
что то мне кажется что он мне не точные индексы дает. Случаем абсолютные индексы этоже точные индексы
Alexandr17-10 вне форума Ответить с цитированием
Старый 22.08.2013, 10:02   #5
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Ну все правильно. Он не те индексы задает так как такая загрузка уже не работает
Код:
If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text2') ,TRV1.Selected.Text)>0 then begin
    TexIni:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\Ðåäàêòîð Libx\Text.ini');
    TreeNode:=TRV1.Selected;
    while TreeNode.Parent <> nil do
      TreeNode:=TreeNode.Parent;
    RTFB1.Text:=TexIni.ReadString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+IntToStr(TreeNode.Index)+'('+TreeNode.Text+')',Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(TRV1.Selected.AbsoluteIndex)+'('+TRV1.Selected.Text+')]','îøèáñÿ âèäíî â êîäå òàê êàê íå ìîãó íàéòè');
    TexIni.Free;
  end;
вот код:
Код:
procedure TMain_Application.BTN4Click(Sender: TObject);
var i,i1:integer;
  TreeNode: TTreeNode;
  AddTreeNode:TTreeNode;
  Counttr1:Integer;
begin
  TRV1.SetFocus;
  If Length(ED3.Text) >0 then begin
    TexIni:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\Ðåäàêòîð Libx\Text.ini');
      For i := TRV1.Items.Count-1 downto 0 do begin
        If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1') ,TRV1.Items.Item[i].Text)=0 then begin
          AddTreeNode:=TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1')+' '+Ed3.Text);
          TRV1.Items.Item[I].Selected:=True;
          TexIni.WriteString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+inttostr(i)+'('+TRV1.Items.Item[I].Text+')', Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(AddTreeNode.AbsoluteIndex)+'('+AddTreeNode.text+')]','MaxID:'+IntToStr(StrToInt(ED3.Text)+9));
        end;
      end;
      TRV1.SetFocus;
      Counttr1:=TRV1.Items.Count-1;
      For i := Counttr1 downto 0 do begin
        For i1 := 1 to StrToInt(ED3.Text) do begin
          If Pos(GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1') ,TRV1.Items.Item[i].Text)>0 then begin
            AddTreeNode:=TRV1.Items.AddChild(TRV1.Items.Item[I],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text2')+' '+IntToStr(i1));
            TreeNode:=TRV1.Items.Item[i];
            while TreeNode.Parent <> nil do
              TreeNode:=TreeNode.Parent;
            TexIni.WriteString('-->Libx-->'+IntToStr(TabControl1.TabIndex)+'('+TabControl1.Tabs.Strings[TabControl1.tabIndex]+')'+'-->'+inttostr(TreeNode.Index)+'('+TreeNode.Text+')', Name+'-->'+TRV1.Name+'-->Text<--Lines['+IntToStr(AddTreeNode.AbsoluteIndex)+'('+AddTreeNode.Text+')]',IntToStr(I1+9)+': '+AddTreeNode.Text+' '+TreeNode.Text);
          End;
        end;
      end;
      TRV1.FullExpand;
      Ed3.Text:='';
    TexIni.Free;
  end;
end;
скажите пожалуйста что я не так делаю
Alexandr17-10 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по Virtual Treeview Lauri Компоненты Delphi 8 04.04.2013 00:09
ASP.NET C# компонент TreeView. Перетащить какой - либо пункт меню из TreeView в TextBox Claster ASP.NET 0 02.01.2013 18:59
Вопрос по TreeView zii Общие вопросы Delphi 6 01.02.2010 17:01
вопрос по TreeView user_jasser Win Api 2 24.11.2008 20:25
вопрос по TreeView Cyn4uk Общие вопросы Delphi 10 23.12.2007 21:34