Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.08.2013, 23:35
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию Работа с TreeView

Как можно получить индекс самого первого узла где находиться выделенный узел
Допустим

Русский
-->Максимальное число CMP MaxID:
----> Текст: 1
----> Текст: 2
----> Текст: 3
Английский
...
У меня выделен узел Текст: 3 надо получить индекс Русский тоесть нужно получить Index = 0 но как это сделать программно
Английский это уже будет Index = 1

Есть функция
Ответить с цитированием
  #2  
Старый 20.08.2013, 00:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от AlexandrV
Как можно получить индекс самого первого узла где находиться выделенный узел
Рекурсивно идти от TreeView1.Selected до тех пор, пока не получишь Node.Parent = Nil.
Код:
function GetTopNodeIndex(ASelected : TTreeNode) : Integer
var
  Node : TTreeNode;
begin
  Node := ASelected;
  If Node = Nil 
    Then Result := -1
    Else
      Begin
        While Node.Parent <> Nil Do Node := Node.Parent;
        Result := Node.Index;
      End;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
AlexandrV (20.08.2013)
  #3  
Старый 20.08.2013, 22:14
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию

Код:
procedure TMain_Application.BTN4Click(Sender: TObject);
var i:integer;
begin
  TRV1.SetFocus;
  If Length(ED3.Text) >0 then begin
    TexIni:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\Редактор Libx\Text.ini');
      For i := 0 to TRV1.Items.Count-1  do begin
        If Pos(TRV1.Items.Item[i].Text, GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1'))=0 then begin
          TexIni.WriteString('-->Libx-->'+TabControl1.Tabs.Strings[TabControl1.tabIndex]+'-->'+inttostr(i)+'-->'+GetChangeLang('RUS-->',name+'-->'+TRV1.Name+'-->Items-->Text4')+' '+Ed3.Text, Name+'-->'+RTFB1.Name+'-->Text<--Lines['+IntToStr(TRV1.Selected.AbsoluteIndex)+']','MaxID:'+ED3.Text);
          TRV1.Items.AddChild(TRV1.Items.Item[i],GetChangeLang('RUS-->', name+'-->'+TRV1.Name+'-->Items-->Text1')+' '+Ed3.Text);
        end;
      end;
      TRV1.FullExpand;
      Ed3.Text:='';
    TexIni.Free;
  end;
end;

В TreeView1 он мне узлы добавляет таким образом

Русский
--->Максимальное число CMP MaxID: 10
------>Максимальное число CMP MaxID: 10
Английский

а надо так

Русский
--->Максимальное число CMP MaxID: 10
Английский
--->Максимальное число CMP MaxID: 10

Такто проблемы нет сделать задом на перед но надо сохранить Absoluteindex в секции узла который добавляешь тоесть если добавляешь в узел русский то он должен в секцию записть абсолютный индекс узла русский чтобы потом этот текст можно было считать
Можете помочь как сделать переменная i и должна содержать этот абсолютный index
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025