Форум: "Media";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
ВнизПросмотр изображений в отдельной папке Найти похожие ветки
← →
Ah (2006-10-03 22:47) [0]Необходимо сделать прогу для просмотра изображений форматов bmp и jpg. Изображения помещаю на компонент Image1 вот таким образом:
TForm1.N2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
На форме также присутствуют кнопки: BitBtn1 и BitBtn2. Задача в том, чтобы при нажатии на эти кнопки можно было просмотреть все изображения в папке, из которой мы загрузили первую иллюстрацию(BitBtn1 - следущая и BitBtn2- предыдущая иллюстрация в данной папке). Нашел пример подобной проги, но там каталог(папка) задается в компоненте Edit вручную - это неудобно. Я новичок в Delphi. Помогите пожалуйста!
← →
ProgRAMmer Dimonych (2006-10-03 23:18) [1]Изображения в папке: FindFirst, FindNext, FindClose.
Получаем список (можно результаты поиска в TStringList, например, поместить, у него есть возможность сортировки). Держим порядковый номер в списке текущего файла, по нажатию на соответствующую кнопку меняем.
Только, если я правильно понял назначение программы, лучше выбирать не графический файл, а папку с файлами. SelectDirectory в справке по VCL...
← →
Ah (2006-10-04 11:41) [2]Нет, смысл как раз в том, что мы выбираем один графический файл из каталога с помощью Dialog1, а дальше с помощью кнопок "Следующее изображение" и "Предыдущее изображение" просматриваем другие изображения из этого каталога. Тоесть принцип такой же, как у стандартной проги из Windows XP - "Программа просмотра изображений и факсов" она называется помоему...
← →
NailMan © (2006-10-04 12:19) [3]Делаешь все как предложил ProgRAMmer Dimonych , только в такой последвательности:
- открываешь опендиалогом нужный файло.
- так как полный путь его ты уже знаешь, вычленяешь с помощью функции ExtractFileDir путь для поиска остальных файлов в папке с помощью FindFirst, Findnext и т.д. все найденные файлы заносишь в Tstringlist.
- сортируешь или нет stringlist и находишь открытый уже файл. запоминаешь его индекс.
- Далее своими мегакнопочками прибавляешь или убавляешь индекс и соотвествующую строчку с именем файла грузишь в image
---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13
← →
Vovan#1 (2006-10-04 18:59) [4]В идеале это всё вывести в поток, который потом периодически обновлял бы индексацию папочки.
← →
Ketmar © (2006-10-04 19:04) [5]>[4] Vovan#1 4-Oct-2006, 18:59
>периодически обновлял бы индексацию папочки.
проще следить за изменениями при помощи нотификаций и обновлять только по необходимости. %-)
← →
Vovan#1 (2006-10-04 20:16) [6]>проще следить за изменениями при помощи нотификаций и обновлять только по необходимости. %-)
Не знал о таком. Но в поток надо.
← →
Ketmar © (2006-10-04 20:22) [7]>[6] Vovan#1 4-Oct-2006, 20:16
>Не знал о таком. Но в поток надо.
не спорю. я не о том. я о том, что не надо потоянно перечитывать, если можно спокойно подсматривать. %-)
← →
Ah (2006-10-05 21:07) [8]Вообщем сделал с помощью функций 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-05 22:32) [9]тебе же сказали: сначала делаешь список всех файлов, потом работаешь с готовым списком.
← →
ProgRAMmer Dimonych (2006-10-05 22:56) [10]Подробнее...
В описании формы (или где-нибудь, чтобы во всех процедурах было видно) пишем
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).
← →
clickmaker © (2006-10-06 12:10) [11]
> сначала делаешь список всех файлов, потом работаешь с готовым
> списком
тем более что список этот можно отсортировать.
А FindNext находит в том порядке, в каком они в папке лежат. Т.е. беспорядочно, с точки зрения юзера
← →
Sapersky (2006-10-06 12:40) [12]А FindNext находит в том порядке, в каком они в папке лежат
Зависит от ОС и/или файловой системы. в Win98/FAT - беспорядочно, Win2000/NTFS - в отсортированном по имени виде. В общем случае - да, надо сортировать.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c