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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 15:44   #1
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
Восклицание загрузка из файла ini в ListView

Доброго дня!
В Delphi я не силен и вот не могу справиться с такой задачей:
есть файл ini такого вида:
Код:
[Film1]
path_client1=Film1.avi
path_client2=Film1-1.avi
path_client3=Film1-2.avi
wave=
effect=
duaration=15:10
style=horror
age=16
[Film2]
path_client1=Film2.avi
path_client2=Film2-1.avi
path_client3=Film2-2.avi
wave=
effect=
duaration=13:22
style=cartoon
age=6
[Film3]
path_client1=Film3.avi
path_client2=Film3-1.avi
path_client3=Film3-2.avi
wave=
effect=
duaration=14.01
style=joke
age=8
И есть у меня ListView на форме. Мне надо создать в ListView 5 колонок.
1. Номер (порядковый номер строки, создается с номера 1)
2. Название (название секции)
3. Длительность (значение ключа duaration)
4. Стиль (значение ключа style)
5. Возраст (значение ключа age)

Как прочитать из ini я нашел:
http://code-code.narod.ru/art/ini.html (прошу прощения если нельзя давать ссылки, но это не реклама)

А вот как передать все это дело в ListView при загрузке - не знаю....
И вот еще что непонятно, как выводить все в разные строки... Название ключей-то повторяется...
Помогите полз. кто знает. Может есть смысл хранить как-то по другому эти все значения....
DenisVoronov вне форума Ответить с цитированием
Старый 08.11.2010, 16:27   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Скачиваем наконец-то и используем в качестве настольной книги:
http://programmersclub.ru/files/book1_100comp.rar
mihali4 вне форума Ответить с цитированием
Старый 08.11.2010, 16:48   #3
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Интересная книга. Скачал... Спасибо.
Все-равно мало что понял.
Беру из книги пример:
Код:
ListView1.WorkAreas.Add;
ListView1.WorkAreas[0].Rect := Rect(0,0,
     ListView1.ClientWidth div 4, ListView1.ClientHeight div 2);
ListView1.WorkAreas.Items[0].DisplayName := 'Область 0';
ListView1.WorkAreas.Items[0].Color := clRed;
ListView1.WorkAreas.Add;
ListView1.WorkAreas[1].Rect := Rect(ListView1.ClientWidth div 2,
     0, (ListView1.ClientWidth div 4)*3, ListView1.ClientHeight div 2);
ListView1.WorkAreas.Items[1].DisplayName := 'Область 1';
Ставлю WorksArea в true и ничего не вижу....

-----------
В общем поставил вид отображения и увидел прямоугольники с надписями.
Это ладно.
Мне не сильно это помогло. Я не могу понять как добавить в колонку текст..
Сделал несколько колонок, как и надо, их я вижу, но вот как добавить в каждую колонку свой контент не могу найти..

Последний раз редактировалось DenisVoronov; 08.11.2010 в 16:58.
DenisVoronov вне форума Ответить с цитированием
Старый 08.11.2010, 17:08   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Используем штатный хэлп Дельфи (выделяем на форме ListView1 и жмем пимпу F1).
Изучаем свойства и методы ТListView...
Для свойства Items есть исчерпывающие примеры для Дельфи (Delphi example).
mihali4 вне форума Ответить с цитированием
Старый 08.11.2010, 17:21   #5
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Цитата:
Используем штатный хэлп Дельфи (выделяем на форме ListView1 и жмем пимпу F1).
И видим:
Цитата:
No help found for TPersistent
Да и вообще, на главной странице форума надо написать:
Delphi HELP ВАМ в помощь. Зачем занимать место и писать километры кода.

mihali4, если Вы не очень жаждите подсказывать, то не надо. Я понимаю что Вам просто лень писать такую простоту (для вас же это просто), может кто другой напишет что мне делать.
DenisVoronov вне форума Ответить с цитированием
Старый 08.11.2010, 17:29   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
No help found for TPersistent
А почему у меня этот хелп есть?
И причем тут TPersistent, тебе же сказали - ТListView
Цитата:
Беру из книги пример:
А почему вручную в дизайне не создашь столько колонок сколько надо? Зачем динамически это делать? Судя по ИНИ у тебя их будет фиксированное число.

Впрочем если хочется, то колонки создаются так:
Код:
 ListView1.ViewStyle:=vsReport;
 with ListView1.Columns.Add do begin
  Caption:='fsdf';// Это заголовок колонки
 end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2010, 17:39   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Items property
Column, Items, ViewStyle, SmallImages, LargeImages, ImageIndex, AddObject, Objects example
Код:
This example requires a TListView, a TImageList and a TComboBox. You will need to double click the image list and add several images to the image list prior to running the project. You can use *.bmp or *.ico files from the \Images\Icons directory.
During the form’s OnCreate event handler, items for the List View control are created for each image in the Image List and the ImageIndex is assigned the number of the image within the ImageList. Two columns are created so that when ViewStyle is vsReport, you will have columns to view.

Also within the form’s OnCreate event handler assign the ComboBox each of the four TViewStyle constants to the Items’ Objects property. You could also simply code this within a series of OnClick event handlers as, for instance, ListView1.->ViewStyle := vsIcon.

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  ListItem: TListItem;
  NewColumn: TListColumn;
begin
  // Create a ListView item for each image in the ImageList
  with ListView1 do
  begin
    SmallImages := ImageList1;
    LargeImages := ImageList1;
    for I := 0 to ImageList1.Count - 1 do
    begin
      ListItem := Items.Add;
      Listitem.Caption := 'Image' + IntToStr(I);

      ListItem.ImageIndex := I;
    end;
    // Create two columns to show during viewing as vsReport
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Column 1';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Column 2';
    // Add View styles and constants to the Combo Box
    ComboBox1.Items.AddObject('vsIcon', TObject(vsIcon));
    ComboBox1.Items.AddObject('vsList', TObject(vsList));
    ComboBox1.Items.AddObject('vsReport', TObject(vsReport));

    ComboBox1.Items.AddObject('vsSmallIcon', TObject(vsSmallIcon));
    // Display first item in the Combo Box
    ComboBox1.ItemIndex := 0;
  end;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  with ComboBox1 do
    ListView1.ViewStyle := TViewStyle(Items.Objects[ItemIndex]);
end;
А хэлп нужно бы наладить...
Или вы думаете, что мы будем "засирать" форум цитированием того, что должно находиться у вас под руками ? Ошибаетесь...
А ведь мысль насчет главной страницы форума вполне здравая.
mihali4 вне форума Ответить с цитированием
Старый 08.11.2010, 19:25   #8
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Цитата:
И причем тут TPersistent, тебе же сказали - ТListView
Ну я, конечно, новичек, но уж выделить компонент и нажать F1 я могу.
Именно ListView и именно F1 я и нажал.
Цитата:
А почему вручную в дизайне не создашь столько колонок сколько надо?
Выше постом я написал что создал колонки. Каким путем - это дело второе.
А по поводу цитаты из help я так и не смог увидеть как добавить запись в определенную колонку.
Может я слепой.... Там отдельно создать колонку, отдельно добавить запись (но в какую колонку я так и не понял) и стиль представления....

В любом случае спасибо вам, за то что пытаетесь помочь.
DenisVoronov вне форума Ответить с цитированием
Старый 08.11.2010, 20:09   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну вот второй пример из хэлпа. Может быть тут увидите
Код:
This example requires only a blank form.  All other objects: TListView, TListColumns, TListItems, are created dynamically. You must add comctrls to the uses clause of the unit file.

procedure TForm1.FormCreate(Sender: TObject);

const
  Names: array[0..5, 0..1] of string = (
    ('Rubble', 'Barney'),
    ('Michael', 'Johnson'),
    ('Bunny', 'Bugs'),
    ('Silver', 'HiHo'),
    ('Simpson', 'Bart'),
    ('Squirrel', 'Rocky')
    );

var
  I: Integer;
  NewColumn: TListColumn;
  ListItem: TListItem;
  ListView: TListView;
begin
  ListView := TListView.Create(Self);
  with ListView do
  begin
    Parent := Self;
    Align := alClient;

    ViewStyle := vsReport;

    NewColumn := Columns.Add;
    NewColumn.Caption := 'Last';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'First';

    for I := Low(Names) to High(Names) do
    begin
      ListItem := Items.Add;
      ListItem.Caption := Names[I][0];
      ListItem.SubItems.Add(Names[I][1]);
    end;
  end;
end;
Создавать ListView необязательно, можно работать и со своим.
mihali4 вне форума Ответить с цитированием
Старый 08.11.2010, 20:16   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как добавить запись в определенную колонку.
ListItem.SubItems.Add(Names[I][1]); (Дополню Михалыча) добавлят в строке в очередную колонку новую запись.
Записей может быть больше или меньше чем колонок, это не ошибка.
Здесь ListItem - объект отвечающий за вновь добавленную строку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка содержимого txt в ListView foxes Общие вопросы Delphi 6 27.04.2011 00:07
Чтение с INI файла. Baaandit Общие вопросы Delphi 3 26.11.2009 17:15
Загрузка содержимого txt в ListView Rendll Компоненты Delphi 2 26.03.2009 11:04
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
Парсинг INI-файла lyonmik Общие вопросы .NET 2 23.04.2008 19:21