Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94

Загрузить колонки текста в TListView из файлов

06.06.2014, 06:02. Показов 4328. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем утречка доброго! Что-то пытаюсь сделать программку, но никак не пойму, как работать с этим TListView.. Точнее как загрузить в него колонки из файлов..
Кто-нибудь знает, как это сделать?


P.S. Вот полный текст задачи "Создать программу для задания трёх параметров: Температура, Влажность, Давление в компонент TListView. Температура, Влажность, Давление задаются через компоненту TMainMenu в пунктах Температура, Влажность, Давление через файлы Температура.txt, Влажность.txt, Давление.txt с помощью компоненты TOpenDialog"
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2014, 06:02
Ответы с готовыми решениями:

Компонент TListView. Не изменить Alignment для 1 колонки
Всем добрый день. В компоненте TlistView (режим vsReport) хочу установить Alignment = taCenter для 1-ой колонки таблицы в инспекторе...

Вывод текста из БД в з колонки
Всем привет! Подскажите, как вывести текст из бд в 3 колонки? QuerySet - содержит все поля объекта. А как разбить на части поле...

Разбиение текста на колонки из связанного сервера
Драствуйте !!! Такая проблемма : создал связанный сервер текстового файла , но запрос выводит все по строкам без разбиения на колонки ,...

16
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2014, 14:15
А в чем проблема ? В том что не знаешь как создавать элементы TListView ?
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 14:25  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
В том что не знаешь как создавать элементы TListView ?
Похоже и в этом тоже проблема.
Просто я незнаю зачем Columns Editor (редактор столбцов, насколько я понимаю) и Items Editor (редактор вещей?) нужны.
И ещё что-то в этом компоненте всё как-то запутанно.. И нету метода LoadFromFile(), для загрузки данных из файла..
Миниатюры
Загрузить колонки текста в TListView из файлов  
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 14:25  [ТС]
я выделила фиолетовым, то что сама сделала..
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2014, 14:46
Я не в совсем понимаю что тебе нужно и как, а пытаться полностью все объяснять нет смысла, найди и почитай лучше первую книжку от сюда https://www.cyberforum.ru/post3939193.html

Там есть именно по этому компоненту.

Добавлено через 12 минут
У компонента есть несколько стилей представления, cвойство ViewStyle от него главным образом будет зависеть как будет выглядеть узлы. Если тебе нужно что-то похожее на таблицу то вероятно нужен стиль vsReport
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 14:47  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Я не в совсем понимаю что тебе нужно и как
мне всё равно как, лишь бы препод принял работу
а задание звучит так ( его в первом посте написала ещё):
Создать программу для задания трёх параметров: Температура, Влажность, Давление в компонент TListView. Температура, Влажность, Давление задаются через компоненту TMainMenu в пунктах Температура, Влажность, Давление через файлы Температура.txt, Влажность.txt, Давление.txt с помощью компоненты TOpenDialog
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2014, 14:50
Цитата Сообщение от Ксю92 Посмотреть сообщение
мне всё равно как
Мне тоже все равно... я не собираюсь делать за тебя, я лишь подсказываю, а то как нужно твоему преподу тебе виднее.
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 15:41  [ТС]
т.е., есть три файла (Температура.txt, Влажность.txt, Давление.txt). В каждом колонка цифр. Надо написать три колонки в TLIstView, т.е. первая колонка, это содержимое файла Температура.txt, во втором - Влажность.txt и в третьем - Давление.txt. По идее и всё По крайней мере, я не вижу что можно больше сделать в этом задании

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
я не собираюсь делать за тебя, я лишь подсказываю, а то как нужно твоему преподу тебе виднее.
а я и не прошу вас делать за меня. Просто я хочу узнать, как загрузить файл в одну из колонок компонента TListView. и всё. Больше ничего не надо, остальное я сама

Добавлено через 48 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TStringList *list;
  TListItem *list_item;
 
  if (OpenDialog1->Execute())
  {
    list->LoadFromFile(OpenDialog1->FileName);
    for (int i = 0; i < list->Count; i++)
    {
      list_item = ListView1->Items->Add();
      list_item->Caption = /**тут надо вставить строку с индексом i*/;
      list_item->SubItems->Add(/**тут надо вставить строку с индексом i*/);
    }
  }
  else
    ShowMessage("Файл не выбран");
Как вставить строку и индексом i из StringList в ListItem?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2014, 16:02
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  if (OpenDialog1->Execute())
  {
    TStringList *list= new TStringList; 
    try
    {
      list->LoadFromFile(OpenDialog1->FileName);
      for (int i=0; i<list->Count; ++i)
     {
        TListItem* list_item= ListView1->Items->Add();
        list_item->Caption= list->Strings[i];
        list_item->SubItems->Add(list->Strings[i]);
     }
    }
    __finally
   {
     delete list;
   }
  }
1
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 16:29  [ТС]
Avazart, спасибо большое за помощь!
Ребят, а как этот код применить три раза?
Т.е. сделать так, чтобы..
Сейчас объясню как
я открываю первый файл и он записывается в первую колонку ListView.
потом я открываю второй файл, и он тоже записывается в ListView, но уже во вторую колонку.
и наконец я открываю третий файл, и он записывается в третью колонку

у меня что-то ужас какой-то выходит
в это коде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (OpenDialog1->Execute())
  {
    TStringList *list = new TStringList;
    try
    {
      list->LoadFromFile(OpenDialog1->FileName);
      Form1->Caption = list->Count;
      for (int i=0; i < list->Count; ++i)
      {
        TListItem* list_item = ListView1->Items->Add();
        list_item->Caption = list->Strings[i];
      }
    }
    __finally
   {
     delete list;
   }
  }
я удалила эти две строчки
C++
1
2
list_item->SubItems->Add(list->Strings[i]);
list_item->SubItems->Add(list->Strings[i]);
т.к. мне надо только в первую колонку.
Но она записывается как-то неадекватно (по три строчки на столбец), и к тому же, во второй и третий столбик уже не запишешь ничего...

Как сделать вот так
я открываю первый файл и он записывается в первую колонку ListView.
потом я открываю второй файл, и он тоже записывается в ListView, но уже во вторую колонку.
и наконец я открываю третий файл, и он записывается в третью колонку
Миниатюры
Загрузить колонки текста в TListView из файлов  
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
06.06.2014, 16:31  [ТС]
На картинке показан результат, после одного нажатия кнопки, и по идее цифры должны быть в один столбик с заголовком "Температура"...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
06.06.2014, 16:52
Лучший ответ Сообщение было отмечено Ксю92 как решение

Решение

Ксю92, смотри (я надеюсь, ListView переведен в ViewStyle = vsReport, и сами столбцы уже добавлены через контекстное меню?) :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Первая колонка:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if (OpenDialog1->Execute())
    {
        TStringList *list = new TStringList;
        try
        {
            list->LoadFromFile(OpenDialog1->FileName);
            Form1->Caption = list->Count;
            for (int i = 0; i < list->Count; ++i)
            {
                TListItem* list_item = ListView1->Items->Add();
                list_item->Caption = list->Strings[i]; // Заполняешь только Caption
            }
        }
        __finally
        {
            delete list;
        }
    }
 
 
}
 
// Вторая и последующие
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    if (OpenDialog1->Execute())
    {
        TStringList *list = new TStringList;
        try
        {
            list->LoadFromFile(OpenDialog1->FileName);
            Form1->Caption = list->Count;
            for (int i = 0; i < list->Count; ++i)
            {
                TListItem* list_item = ListView1->Items->Item[i]; // Уже существующий айтем, не надо добавлять
                list_item->SubItems->Add(list->Strings[i]); // и к нему добавляешь данные в следующий столбец
            }
        }
        __finally
        {
            delete list;
        }
    }
 
}
, но количество строк в файле для последующих колонок должно быть не больше, чем в файле для первой колонки, иначе будет проблема. Идеально - если количество строк вообще одинаково во всех файлах...
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
07.06.2014, 06:24  [ТС]
UI, спасибо большое за помощь!
Цитата Сообщение от UI Посмотреть сообщение
и сами столбцы уже добавлены через контекстное меню?) :
Это вот это окошко? (на картинке красной рамкой обведено)


Цитата Сообщение от UI Посмотреть сообщение
, но количество строк в файле для последующих колонок должно быть не больше, чем в файле для первой колонки, иначе будет проблема. Идеально - если количество строк вообще одинаково во всех файлах...
и это условие я выполнила. Вот результат работы программы: синий - это 1-й файл (там 20 строк), красный - это 2-й файл и зеленый - это 3-й файл

Как сделать так, чтобы заголовки были как надо, над каждым столбиком?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
07.06.2014, 10:21
Приведи содержимое текстовых файлов, после обработки которых получается такой результат, и весь свой код, который работает с ListView... Так не должно получаться ни при каких условиях...
0
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
07.06.2014, 21:45  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Так не должно получаться ни при каких условиях...
похоже, что я сделала открытие.. это однозначно к добру

Вот всё, что вы просили
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)  //грузим файл Температура.txt
{
  OpenDialog1->Filter = "Температура.txt";
  if (OpenDialog1->Execute())
    {
      TStringList *list = new TStringList;
      try
      {
        list->LoadFromFile(OpenDialog1->FileName);
        Form1->Caption = list->Count;
        for (int i = 0; i < list->Count; ++i)
        {
          TListItem* list_item = ListView1->Items->Add();
          list_item->Caption = list->Strings[i];
        }
      }
      __finally
      {
        delete list;
      }
    }
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::N3Click(TObject *Sender) //грузим файл Влажность.txt
{
  OpenDialog1->Filter = "Влажность.txt";
  if (OpenDialog1->Execute())
    {
        TStringList *list = new TStringList;
        try
        {
            list->LoadFromFile(OpenDialog1->FileName);
            Form1->Caption = list->Count;
            for (int i = 0; i < list->Count; ++i)
            {
                TListItem* list_item = ListView1->Items->Item[i];
                list_item->SubItems->Add(list->Strings[i]);
            }
        }
        __finally
        {
            delete list;
        }
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::N4Click(TObject *Sender) //грузим файл Давление.txt
{
  OpenDialog1->Filter = "Давление.txt";
  if (OpenDialog1->Execute())
    {
        TStringList *list = new TStringList;
        try
        {
            list->LoadFromFile(OpenDialog1->FileName);
            Form1->Caption = list->Count;
            for (int i = 0; i < list->Count; ++i)
            {
                TListItem* list_item = ListView1->Items->Item[i];
                list_item->SubItems->Add(list->Strings[i]);
            }
        }
        __finally
        {
            delete list;
        }
    }
}
//---------------------------------------------------------------------------

Давление.txt
8157.364
8201.213
8145.015
8206.153
9198.197
8153.157
8440.251
7404.651
8654.546
7801.315


Влажность.txt
157.364E
201.213E
145.015E
206.153E
198.197E
153.157E
440.251E
404.651E
654.546E
801.315E


Температура.txt
157.364
201.213
145.015
206.153
198.197
153.157
440.251
404.651
654.546
801.000
157.364
201.213
145.015
206.153
198.197
153.157
440.251
404.651
654.546
801.315
Вложения
Тип файла: zip Solution9.zip (48.2 Кб, 4 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 12
07.06.2014, 21:59
Что характерно, код нормально работает:



(правда под XE2, BCB6 не держу)
1
 Аватар для Ксю92
73 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 94
08.06.2014, 11:17  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Что характерно, код нормально работает:
а вы на какой оси проверяли? просто я на Windows 8.1 64-битной (просто другого под рукой нету)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2014, 11:17
Помогаю со студенческими работами здесь

Запретить выход текста за границы колонки DbGrid-а
как в делфи 7 сделать так чтоб текст не выходил за край поля в DBGrid? поле &quot;краткое описание&quot; в вложенном изображении.

Колонки шумят и реагируют на движение мыши,копирование файлов и т.д.
Есть проблема. Взяла комп б/у целиком. Колонки Maxxrro шипят, в момент вкл. системника издают громкий хлопок, при обмене данными с флэшкой...

Загрузить N кол-во файлов в TStringList
Как правильно реализовать следующее: var list: TStringList; begin list:=TStringList.Create; for i:=0 to...

Загрузить .rtf файлов из ресурсов
Подскажите пожалуйста, как можно загрузить .rtf документ в RichTextBox из Properties.Resources?

Загрузить несколько файлов Excel
Доброго времени суток. Вопрос. Нужно загрузить N книг эксель что бы их в последующем обработать поочередно в написанной программе. Каким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru