Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 492

/ вопрос открыт /

Нужна помощь по RaizePack (версии не помню), хотя и в простом TTreeView я тоже с этим столкнулся. Ситуация такая: на форме присутствует TRzCheckTree (или TTreeView), подключен inifiles, нужно выполнить ReadSections и ReadStrings так, чтобы можно было добавить в список пункты по названиям секций ини-файла, а по клику на "плюсик" появлялся список "подпунктов", проименованый простыми строками из INI-шки..... при работе с StringList (ini.ReadSections(stringlist); treeview.items.add(stringlist);)
идёт ругань, что, мол, дословно, несовместимы типы TTreeNode и TStringList.
То есть что, собственно, надо:

Есть INI-файл -
[секция1]
пункт1=...
пункт2=...
[секция2]
пункт5=...
...

Должно быть в Treeview -
[+] секция1
[+] секция2


[-] секция1
|---пункт1
|---пункт2
[-] секция2
|--пункт5
...
Объяснил хреновенько, зато наглядно)) заранее благодарен.

anthonysoprano Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: anthonysoprano (статус: Посетитель)
Вопрос отправлен: 8 августа 2010, 13:58
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, anthonysoprano!
С TRzCheckTree не работал, а со стандартным деревом могу помочь. Надо понимать, что Pascal не волшебник, а строго типизируемый язык. Если ему не нравится какой-то аргумент, значит так и задумано. Нужно одельно в цикле создавать каждую веточку.

var ini: TIniFile;
    sections, sl: TStringList;
    i, j: integer;
    node: TTreeNode;
begin
  ini := TIniFile.Create('prog.ini');
  sections := TStringList.Create;
  sl := TStringList.Create;
  try
    ini.ReadSections(sections);
    for i := 0 to sections.Count - 1 do begin
      node := TreeView1.Items.Add(nil, sections[i]);
      sl.Clear;
      ini.ReadSection(sections[i], sl);
      for j := 0 to sl.Count - 1 do
        TreeView1.Items.AddChild(node, sl[j]);
    end;
  finally
    sl.Free;
    sections.Free;
    ini.Free;
  end;
end;

Ответ отправил: DNK (статус: Студент)
Время отправки: 12 августа 2010, 13:33
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 9 августа 2010, 00:18; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 8 августа 2010, 14:12 [#1]:

Цитата (anthonysoprano):

идёт ругань, что, мол, дословно, несовместимы типы TTreeNode и TStringList.

Сразу видно, что ошибка в 17-й строке.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
anthonysoprano

anthonysoprano (статус: Посетитель), 8 августа 2010, 14:26 [#2]:

min@y™: в 17-ой строке чего?
min@y™

min@y™ (статус: Доктор наук), 8 августа 2010, 14:57 [#3]:

Цитата (anthonysoprano):

в 17-ой строке чего?

В 17-й строке твоей программы, которую никто не видел.
treeview.items.add(stringlist);
Это и есть строка №17.
Ну загляни ты в хэлп или, хотя бы, просмотри параметры метода TTreeNodes.Add()! Сразу поймёшь, почему компилятор ругается.

Голова у программиста - не только шапку носить. Применяй голову.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
anthonysoprano

anthonysoprano (статус: Посетитель), 9 августа 2010, 00:18 [#4]:

Я с делфи знаком давно, но с Tree-компонентами вообще не приходилось сталкиваться, поэтому хотелось бы узнать что вообще такое TTreeNode, как его готовить, с чем подавать и чем есть. Хэлпы юзал, но с английского мало чего понял........

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.03 сек.