Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Загрузка ini-файла в TTreeView

Delphi , Компоненты и Классы , TTreeView

Загрузка ini-файла в TTreeView

Автор: Dynamic

Статья Загрузка ini-файла в TTreeView раздела Компоненты и Классы TTreeView может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TTreeView ::


Code:

procedure LoadIniToTree(const FName: string; Tree: TTreeView);
var LS, LV: TStrings;
   i, j: integer;
   root: TTreeNode;
   n: string;
   p: PString;
begin
    Tree.Items.Clear;  // очищаем дерево
    with TIniFile.Create(FName) do // пытаемся открыть файл FName
    try
      LS := TStringList.Create;  // список названий секций
      try
        ReadSections(LS);          // читаем все секции в список
        LV := TStringList.Create;   // список пар "имя=значение"
        try
          for i := 0 to LS.Count-1 do // для всех секций...
          begin
            LV.Clear;                   // подготовим список
            ReadSectionValues(LS[i], LV);  // читаем список пар "имя=значение" для текущей секции
            root := Tree.Items.Add(nil, LS[i]); // добавляем корневой узел (имя текущей секции)
            for j := 0 to LV.Count-1 do    // для всех пар "имя=значение"...
            begin
             n := LV.Names[j];  // выделяем "имя"
 
             // добавляем дочерний по отношению к root узел,
             // в качестве текста исп. "имя"
             // в качестве значения поля Data = "значение"
             New(p);
             p^ := LV.Values[n];
             Tree.Items.AddChildObject(root, n, p);
            end;
          end;
        finally
          LV.Free;
        end;
      finally
        LS.Free;
      end;
    finally
      Free;  // корректно уничтожаем объект TIniFile
    end;
end;
 
// Применение:
 
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
    if (TreeView1.Selected <> nil) and (TreeView1.Selected.Parent <> nil) then
    begin
       Edit1.Text := TreeView1.Selected.Text;
       Edit2.Text := String(TreeView1.Selected.Data^);
    end else
    begin
      Edit1.Text := '';
      Edit2.Text := '';
    end;
end;
 
// После использования не забыть освободить память, напр. так:
 
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
if Node.Data <> nil then
   Dispose(PString(Node.Data));
end;

реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
23.04.2024 17:45:56/0.0043199062347412/2