Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1180446877
access
2007-05-29 17:54
2007.06.24
из Аксес в Делфи и обратно в Аксес


15-1180078735
iXT
2007-05-25 11:38
2007.06.24
Bitmap(16*16)


4-1168818862
Scotty
2007-01-15 02:54
2007.06.24
Помогите с Msgina.dll


15-1180332884
Мальчик из песочницы
2007-05-28 10:14
2007.06.24
Уго Чавес отменил вступительные экзамены в вузы


1-1177355137
kull
2007-04-23 23:05
2007.06.24
Как преобразовать строку в дату?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский