C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как открыть следующую картинку в Image
** Павел
Отправлено: 20.05.2006, 13:54


Не зарегистрирован







Люди, у меня такой вопрос.
Делаю простой графичкеский просмотрщик.
Пользователь открывает картинку из какой либо папки, как можно сделать, чтобы при нажатии на кнопку открывалась следующая или предыдущая картинка из этой папки.
olegenty
Отправлено: 20.05.2006, 14:11


Ветеран

Группа: Модератор
Сообщений: 2412



самое простое — при открытии папки сканировать её содержимое в список, а дальше оперировать индексом в списке. TStringList вполне подойдёт.
** Павел
Отправлено: 20.05.2006, 14:45


Не зарегистрирован







А как можно это сделать?
olegenty
Отправлено: 20.05.2006, 14:55


Ветеран

Группа: Модератор
Сообщений: 2412



https://rxlib.ru/forums/index.php?ac...db47cb55a640e91
Aptem
Отправлено: 20.05.2006, 16:57


Мастер участка

Группа: Участник
Сообщений: 349



Держи! Загружает содержимое папки в TListBox.

CODE

void __fastcall TForm1::GetFileList ( TListBox *ListBox )
{
 AnsiString Directory, File;
 TSearchRec sr;

 if ( SelectDirectory ( Directory, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 1000 ) )
 {
   ListBox -> Items -> Clear ();

   if ( FindFirst ( Directory + "\\*.*", faAnyFile, sr ) == 0 )
   {
     do
     {
       if ( ( sr.Name == "." ) ) continue;

       if ( !( sr.Attr & faHidden ) && !( sr.Attr & faSysFile ) && !( sr.Attr & faDirectory ) && !( sr.Attr & faVolumeID ) )
       {
         File = sr.Name;
         ListBox -> Items -> Add ( File );
       }
     } while ( FindNext ( sr ) == 0 );

     FindClose ( sr );
   }

   if ( !ListBox -> Items -> Count ) ShowMessage ( "There are no files in folder!" );
   else
   {
     ListBox -> ItemIndex = 0;
   }
 }
}
** Павел
Отправлено: 20.05.2006, 17:23


Не зарегистрирован







Спасибо, с этим разобрался. Еще один маленький вопрос. В строке

if(FindFirst(currDir+"\\"+"*.mp3", faAnyFile, sr) == 0)
указывается раширение файла. Не получается указать дополнительные расширения ,например , чтоб открывал файлы mp3 или wma и т.д
Aptem
Отправлено: 21.05.2006, 05:33


Мастер участка

Группа: Участник
Сообщений: 349



QUOTE (** Павел @ 20/05/2006, 17:23)
if(FindFirst(currDir+"\\"+"*.mp3", faAnyFile, sr) == 0)
указывается раширение файла. Не получается указать дополнительные расширения ,например , чтоб открывал файлы mp3 или wma и т.д

Если по-тупому, то:
CODE

if ( FindFirst ( currDir+"\\"+"*.mp3", faAnyFile, sr ) == 0 && FindFirst ( currDir+"\\"+"*.wma", faAnyFile, sr ) == 0 )
olegenty
Отправлено: 21.05.2006, 06:06


Ветеран

Группа: Модератор
Сообщений: 2412



2 Aptem — ну-ну. и оператор && поставил вместо ||.
проще отдельную строку сформировать и единыжды её применить.

Вернуться в Вопросы программирования в C++Builder