Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74

Недочёты в TListView

16.11.2009, 23:32. Показов 3135. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Фрагмент кода:
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
TListColumn *NewColumn;
ListView1->Align = alNone;
ListView1->ViewStyle = vsReport;
 
NewColumn = ListView1->Columns->Add();
NewColumn->Caption = "Name";
 
NewColumn = ListView1->Columns->Add();
NewColumn->Caption = "Time";
 
    TSearchRec SearchRec;  
 
   if (FindFirst(path + "*.mp3", faAnyFile, SearchRec) == 0 )
   {
    ListView1->Items->Add()->Caption = (SearchRec.Name);
        
 
        while (FindNext(SearchRec) == 0)
            ListView1->Items->Add()->Caption = (SearchRec.Name);
            
    }
 
   ListView1->ItemIndex = 0;
   SpeedButton6->Enabled = false;
И следующий фрагмент, позволяющий определить длительность файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::TrackInfo()
{
long int TrackLength;
int minf,secf;
AnsiString st;
    TrackLength = MediaPlayer1->TrackLength[1]/1000;
    minf=TrackLength/60;
    secf=TrackLength%60;
st = IntToStr(minf) + ":";
  if (sec < 10)
        st = st + "0" + IntToStr(secf);
  else
        st = st + IntToStr(secf);
ListView1->Items->Add()->SubItems->Add(st);
}
Вопрос: почему, при добавлении функции
C++
1
TrackInfo();
в первый фрагмент кода после строки
C++
1
ListView1->Items->Add()->Caption = (SearchRec.Name);
, т.е., когда пишем так:
C++
1
2
3
4
5
6
7
8
   if (FindFirst(path + "*.mp3", faAnyFile, SearchRec) == 0 )
   {
        {ListBox1->Items->Add(SearchRec.Name); 
                        TrackInfo();}
        
        while (FindNext(SearchRec) == 0)
              {ListBox1->Items->Add(SearchRec.Name); TrackInfo();}
    }
на этапе выполнения возникает ошибка. Или я что-то не так пишу?
И ещё один вопрос.. Как реализовать drag & drop В TListView?
Для ListBox делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm1::ListBox1DragDrop(TObject *Sender, TObject *Source,
      int X, int Y)
{
int SPosition, DPosition;
SPoint[1]=TPoint(X,Y);
SPosition = ListBox1->ItemAtPos(SPoint[0], true);
DPosition = ListBox1->ItemAtPos(SPoint[1], true);
ListBox1->Items->Move(SPosition, DPosition);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ListBox1DragOver(TObject *Sender, TObject *Source,
      int X, int Y, TDragState State, bool &Accept)
{
Accept = (Source = ListBox1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
SPoint[0]=TPoint(X,Y);
}
А с TListView никак не могу разобраться.. Заранее благодарю..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2009, 23:32
Ответы с готовыми решениями:

TListView
Всем добрый день! Нужна помощь. В книге &quot;Библия Delphi&quot; я начал читать про компонент ListView.Для примера был создан небольшой файловый...

TListView +TCheckBox
Добрый день, возможно ли в шапку компонента вставить чекбокс, что бы получился эффект &quot;выбрать все&quot; как в почтовых страницах?

TListView не растягивается
Как сделать, чтобы TListView вместе с окном растягивалось?

22
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 16:23  [ТС]
Проблема остаётся актуальной..
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 16:30
вот баг:
Accept = (Source = ListBox1);
остальное потом гляну...
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 16:33  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
вот баг:
Accept = (Source = ListBox1);
остальное потом гляну...
Вы знаете, а работает прекрасно.. да и ошибок никаких не выдаёт.. это был только пример того, как я реализовывала сиё для TListBox..мне нужно то же реализовать для TListView..
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 17:44
Baratro, у вас всегда Accept будет true, если конечно же ListBox1 не равен NULL... это не сравнение у вас, а присвоение... а что за ошибка-то возникает?
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 17:49  [ТС]
В первом случае, при выполнении возникает следующеая ошибка:
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 17:54  [ТС]
А согласно Accept..составлялась при прочтении книги.. Вот, собственно ниже, то, что было написано автором книги:
C++
1
Accept
меня интересует, как сии же действия проделать в TListView..

Добавлено через 1 минуту
C++
1
2
3
4
5
void __ fastcall TForm1 :: ListView1DragOver (TObject *Sender,
TObject *Source, int X, int Y,
TDragState State, bool &Accept)
{
Accept = (Source = ListView1) ;}
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 18:00
от опечаток никто не застрахован, хотя кто его знает, о чем думал тогда автор книги... а в чем проблема, в этом компоненте также есть события для drag&drop-а: OnDragDrop, OnDragOver, OnEndDock, OnEndDrag
и этот код меня жуть как смущает почему-то:
ListView1->Items->Add()->Caption = (SearchRec.Name);

а на счет ошибки, надо трассировкой выявить, что конкретно ему не нравится
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 18:07  [ТС]
Есть, разумеется.. однако, составить аналог своих действий для ListView у менян е получилось..
Ему конкретно не нравится то, что я добавляю функцию TrackInfo() вот в этой части:
C++
1
2
3
4
5
6
7
8
if (FindFirst(path + "*.mp3", faAnyFile, SearchRec) == 0 )
   {
                {ListBox1->Items->Add(SearchRec.Name); 
                        TrackInfo();}
                
                while (FindNext(SearchRec) == 0)
                          {ListBox1->Items->Add(SearchRec.Name); TrackInfo();}
    }
а почему ему сиё не нравится, мне сиё не совсем понятно..
что же касается кода..где-то лежал у меня исходник, который я корректировала..взято отсюда:
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
void __fastcall TForm1::FormCreate(TObject *Sender)
 
{
const char Names[6][2][10] = 
{{"Rubble","Barny"},
{"Michael", "Johnson"},
{"Bunny", "Bugs"},
{"Silver", "HiHo"},
{"Simpson", "Bart"},
{"Squirrel", "Rocky"}};
 
TListColumn *NewColumn;
TListItem *ListItem;
TListView *ListView = new TListView(this);
 
ListView->Parent = this;
ListView->Align = alClient;
ListView->ViewStyle = vsReport;
NewColumn = ListView->Columns->Add();
NewColumn->Caption = "Last";
 
NewColumn = ListView->Columns->Add();
NewColumn->Caption = "First";
for (int i = 0; i < 6; i++)
{
ListItem = ListView->Items->Add();
ListItem->Caption = Names[i][0];
ListItem->SubItems->Add(Names[i][1]);
}
}
Вот посредством сего и появился смущающий вас код..
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 18:09
Baratro, а что она должна делать? дописывать длительность трека?
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 18:34  [ТС]
Ну так она выше есть..в первом посте:
И следующий фрагмент, позволяющий определить длительность файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    void __fastcall TForm1::TrackInfo()
{
long int TrackLength;
int minf,secf;
AnsiString st;
        TrackLength = MediaPlayer1->TrackLength[1]/1000;
        minf=TrackLength/60;
        secf=TrackLength%60;
st = IntToStr(minf) + ":";
  if (secf < 10)
                st = st + "0" + IntToStr(secf);
  else
                st = st + IntToStr(secf);
ListView1->Items->Add()->SubItems->Add(st);}
Добавлено через 21 минуту
Lord_Voodoo, Она должна записать размер трека во вторую колонку..

Добавлено через 49 секунд
Вернее, продолжительность..**

Добавлено через 19 секунд
Прошу прощение за неточность*
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 19:35
а ты выяснил в каком месте вылетает?

ListView1->Items->Add()->SubItems->Add(st) и снова загадочные манускрипты
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 19:38  [ТС]
Lord_Voodoo, При обращении к функции TrackInfo()..
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 19:43
Цитата Сообщение от Baratro Посмотреть сообщение
TrackLength = MediaPlayer1->TrackLength[1]/1000;
ты трассировать код не умеешь, я так понял? а если в этом коде TrackLength[1] заменить на какое-нить число, ошибка будет? просто исключение генерит проигрыватель, а это единственное место, где ты с ним работаешь...
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 19:49  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
ты трассировать код не умеешь, я так понял? а если в этом коде TrackLength[1] заменить на какое-нить число, ошибка будет? просто исключение генерит проигрыватель, а это единственное место, где ты с ним работаешь...
Lord_Voodoo, Скажем так, ранее не приходилось.. а можно по-подробнее на счёт того, как всё-таки заставить его работать?..

Добавлено через 1 минуту
да, будет..а именно:
[C++ Error] Unit1.cpp(187): E2280 Member identifier expected
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 19:58
а что ты написал?
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 20:00  [ТС]
вот это:
TrackLength = MediaPlayer1->1/1000;
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 20:03
Baratro,вообще предполагалось, чтобы хотя бы так:
TrackLength = 10000/1000;
0
 Аватар для Baratro
4 / 4 / 1
Регистрация: 23.09.2009
Сообщений: 74
17.11.2009, 20:07  [ТС]
Программа запустилась, однако записывает по 10 секунт в каждую строку..

Добавлено через 10 секунд
секунд*
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.11.2009, 20:40
Baratro, но при этом не вылетает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2009, 20:40
Помогаю со студенческими работами здесь

Очистить TListView
Нужно очистить TListView от всех записей (которые находятся в двух колонках) кроме записей заголовка. Чтобы можно было по новой заполнить. ...

Работа с TListView
Кто может привести пример работы с этой компонентой в режиме CheckBoxes=true и ViewStyle=vsReport? 1) как из StringGrid (5 колонок)...

Недочеты в лабиринте
Ребят есть код(лабиринт, робот сам находит выход), нужно реализовать(записать ниже в консоле) все его ходы, например: a, a и так от старта...

Недочеты с сайтом
Здраствуйте форумчане ! Нужна помощь в доработке сайта, не так давно столкнулся с wordpress, хочу разобраться в нём. Но как говорится...

Недочёты в софте
Стоит 14 Ubuntu. Есть 2 вещи в стандартном софте, которые мешают жить. На предыдущей версии не было их 1) в unity есть левая панель для...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
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 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru