![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Просмотр изображений в отдельной папке [D7, WinXP]
Ah © (2006-10-03 22:47:00)Необходимо сделать прогу для просмотра изображений форматов bmp и jpg. Изображения помещаю на компонент Image1 вот таким образом:
TForm1.N2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
На форме также присутствуют кнопки: BitBtn1 и BitBtn2. Задача в том, чтобы при нажатии на эти кнопки можно было просмотреть все изображения в папке, из которой мы загрузили первую иллюстрацию(BitBtn1 - следущая и BitBtn2- предыдущая иллюстрация в данной папке). Нашел пример подобной проги, но там каталог(папка) задается в компоненте Edit вручную - это неудобно. Я новичок в Delphi. Помогите пожалуйста!
Sapersky (2006-10-06 12:40:00) [1]А FindNext находит в том порядке, в каком они в папке лежат
Зависит от ОС и/или файловой системы. в Win98/FAT - беспорядочно, Win2000/NTFS - в отсортированном по имени виде. В общем случае - да, надо сортировать.
clickmaker (2006-10-06 12:10:00) [2]
> сначала делаешь список всех файлов, потом работаешь с готовым
> списком
тем более что список этот можно отсортировать.
А FindNext находит в том порядке, в каком они в папке лежат. Т.е. беспорядочно, с точки зрения юзера
ProgRAMmer Dimonych (2006-10-05 22:56:00) [3]Подробнее...
В описании формы (или где-нибудь, чтобы во всех процедурах было видно) пишем
FileList:TStringList;
CurrPic:Integer; {Номер отображаемой картинки}
В обработчике Create формы пишем
FileList:=TStringList.Create;
В обработчике Destroy формы пишем
FileList.Free;
В процедуре, которая выполняется после выбора файла пишем
FileList.Clear; {Очищаем список}
{Здесь с использованием FindFirst, FindNext заполняем список командой типа FileList.Add();}
{Ищем выбранный в диалоге файл, помечаем в CurrPic}
Теперь в событиях Click кнопок пишем
Inc(CurrPic); или Dec(CurrPic); {Зависит от того, какая из кнопок}
Image1.Picture.LoadFromFile(FileList[CurrPic]);
P.S. Можно ещё проверить, не исчез ли за это время файл (функция FileExists).
Ketmar (2006-10-05 22:32:00) [4]тебе же сказали: сначала делаешь список всех файлов, потом работаешь с готовым списком.
Ah (2006-10-05 21:07:00) [5]Вообщем сделал с помощью функций FindFirst и FindNext. Теперь находит первый графический файл, а при нажатии на кнопку листает изображения вперед(FindNext) в папке. Но как сделать чтобы и назад можно было листать?
Думал, что это функция - FindClose, но вот из этого ничего не получилось:
procedure TForm1.BackPicture;
var
r : integer;
begin
r := FindClose(aSearchRec);
aFile := aPath + aSearchRec.Name;//aFile : String[128], aPath : String[128]
Image1.Picture.LoadFromFile(aFile);
end;
вообщем вперед листает, а назад никак!
Что вообще делает Эта функция- FindClose?
Как найти предыдущий графический файл в папке?
Спасибо...........
Ketmar (2006-10-04 20:22:00) [6]>[6] Vovan#1 4-Oct-2006, 20:16
>Не знал о таком. Но в поток надо.
не спорю. я не о том. я о том, что не надо потоянно перечитывать, если можно спокойно подсматривать. %-)
Vovan#1 (2006-10-04 20:16:00) [7]>проще следить за изменениями при помощи нотификаций и обновлять только по необходимости. %-)
Не знал о таком. Но в поток надо.
Ketmar (2006-10-04 19:04:00) [8]>[4] Vovan#1 4-Oct-2006, 18:59
>периодически обновлял бы индексацию папочки.
проще следить за изменениями при помощи нотификаций и обновлять только по необходимости. %-)
Vovan#1 (2006-10-04 18:59:00) [9]В идеале это всё вывести в поток, который потом периодически обновлял бы индексацию папочки.
NailMan (2006-10-04 12:19:00) [10]Делаешь все как предложил ProgRAMmer Dimonych, только в такой последвательности:
- открываешь опендиалогом нужный файло.
- так как полный путь его ты уже знаешь, вычленяешь с помощью функции ExtractFileDir путь для поиска остальных файлов в папке с помощью FindFirst, Findnext и т.д. все найденные файлы заносишь в Tstringlist.
- сортируешь или нет stringlist и находишь открытый уже файл. запоминаешь его индекс.
- Далее своими мегакнопочками прибавляешь или убавляешь индекс и соотвествующую строчку с именем файла грузишь в image
---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13
Ah (2006-10-04 11:41:00) [11]Нет, смысл как раз в том, что мы выбираем один графический файл из каталога с помощью Dialog1, а дальше с помощью кнопок "Следующее изображение" и "Предыдущее изображение" просматриваем другие изображения из этого каталога. Тоесть принцип такой же, как у стандартной проги из Windows XP - "Программа просмотра изображений и факсов" она называется помоему...
ProgRAMmer Dimonych (2006-10-03 23:18:00) [12]Изображения в папке: FindFirst, FindNext, FindClose.
Получаем список (можно результаты поиска в TStringList, например, поместить, у него есть возможность сортировки). Держим порядковый номер в списке текущего файла, по нажатию на соответствующую кнопку меняем.
Только, если я правильно понял назначение программы, лучше выбирать не графический файл, а папку с файлами. SelectDirectory в справке по VCL...