-
Посоветуйте компонент (алгоритм) для показа фотографий. Нужно выводить фотографии из заданных папок
-
TImage устроит?
Какой еще алгоритм?
-
>oldman © (20.08.08 14:03) [1]
>TImage устроит?
Возможно и устроит, но мне нужно сразу все фотографии находящиеся в папке выводить. Их количество в папках разное. Подскажите как это реализовать
-
findfirst/next
-
> находящиеся в папке выводить.
куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, вопрос переформулируй...
-
a:array of TImage
a[n]=то что найдено findfirst/next
a[n].размеры = посчитать
-
> но мне нужно сразу все фотографии находящиеся в папке выводить.
Монитор треснет :)
-
>brother © (20.08.08 14:14) [4]
>куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, >вопрос переформулируй...
Вывод на форму, чтобы пользователь мог увидеть что у него в папке за фотографии. Размер ясно что уменьшеный, но будет задаваться пользователю возможность изменения масштаба просмотра изображений. Слайдшоу это уже следующий этап, если есть идеи и советы тоже готов выслушать
-
> silver222 (20.08.08 14:24) [7]
Очередной велосипед изобретаем?
-
тогда тебе уже ответили в [1], [3], [5]! ищещь в папке нужные файлы, загоняешь их в массив, потом рисуешь их в TImage...
зы или ты готовый код ждешь?
-
> Очередной велосипед изобретаем?
нет, необходимость может и нужная, но код настолько тривиален, и если человек его не в силах реализовать даже с гуглом, имхо ему не программировать надо, а основы изучать...
-
> silver222 (20.08.08 14:24) [7]
> Вывод на форму, чтобы пользователь мог увидеть что у него
> в папке за фотографии.
А стандартный "проводник" уже не катит?
Надо свои проги писать?
-
> А стандартный "проводник" уже не катит?
точно.
Можно же ShellExecute open папки сделать. Вид только эскизный чтоб был
вообще одна строка кода :)
-
> Vlad Oshin © (20.08.08 15:04) [12]
И ведь при двойном клике увеличение сработает :)
-
> oldman © (20.08.08 15:55) [13]
и осталось удалить лишнее звено - project1.exe
-
var
Form1: TForm1;
searchResult : TSearchRec;
i: integer;
FileCount : integer;
ArrJPEG : Array of TJPEGImage;
ArrTabSheet : Array of TTabSheet;
ArrScrollBox : Array of TScrollBox;
ArrImage : Array of TImage;
ArrLabel : Array of TLabel;
PC: TPageControl ;
JPEGWidth : Array of integer;
JPEGHeight : Array of integer;
NumCurrPage : integer;
ArrCurrJPEGWidth: Array of integer;
ArrCurrJPEGHeight: Array of integer;
ArrFileName : Array of string;
LengthImageArray : integer;
.................................
procedure TForm1.bLoadClick(Sender: TObject);
var
counter: integer;
begin
counter:=0;
FileCount:=0;
LengthImageArray:=0;
// Ïûòàåìñÿ íàéòè ïðàâèëüíûå ôàéëû, ñîîòâåòñòâóþù 232;å Unit1.d* â òåêóùåì êàòàëîãå
if FindFirst('*.jpg', faAnyFile, searchResult) = 0 then
begin
repeat
FileCount:=FileCount+1;
// ShowMessage('Èìÿ ôàéëà = '+searchResult.Name);
// ShowMessage('Ðàçìåð ôàéëà = '+IntToStr(searchResult.Size));
until FindNext(searchResult) <> 0;
// Äîëæåí îñâîáîäèòü ðåñóðñû, èñïîëüçóåìûå ýòèìè óñïåøíûìè, ïîèñêàìè
FindClose(searchResult);
if FileCount = 0 then
begin
ShowMessage('Ôàéëû íå íàéäåíû!!!');
end
else
begin
ShowMessage('Íàéäåíî ' + IntToStr(FileCount) + ' ôàéëîâ.');
if FindFirst('*.jpg', faAnyFile, searchResult) = 0 then
begin
SetLength(ArrJPEG, FileCount);
SetLength(ArrTabSheet, FileCount);
SetLength(ArrScrollBox, FileCount);
SetLength(ArrImage, FileCount);
SetLength(ArrLabel, FileCount);
SetLength(JPEGWidth, FileCount);
SetLength(JPEGHeight, FileCount);
SetLength(ArrCurrJPEGWidth, FileCount);
SetLength(ArrCurrJPEGHeight, FileCount);
SetLength(ArrFileName, FileCount);
// ShowMessage(' Arrayes initialized ');
LengthImageArray:= FileCount;
repeat
FileCount:=FileCount+1;
// ShowMessage('Èìÿ ôàéëà = '+searchResult.Name);
// ShowMessage('Ðàçìåð ôàéëà = '+IntToStr(searchResult.Size));
ArrJPEG[counter]:=TJPEGImage.Create;
ArrJPEG[counter].LoadFromFile(searchResult.Name);
ArrFileName[counter]:= searchResult.Name;
JPEGWidth[counter]:= ArrJPEG[counter].Width;
JPEGHeight[counter]:= ArrJPEG[counter].Height;
// ShowMessage('JPEG.Height = ' + IntToStr(ArrJPEG[counter].Height) + ', JPEG.Width = ' + IntToStr(ArrJPEG[counter].Width));
counter:=counter+1;
until FindNext(searchResult) <> 0;
// Äîëæåí îñâîáîäèòü ðåñóðñû, èñïîëüçóåìûå ýòèìè óñïåøíûìè, ïîèñêàìè
FindClose(searchResult);
end;
end;
end;
PC:= TPageControl.Create(nil);
PC.Parent:= Panel1;
PC.Align:= alClient;
//ShowMessage(' PC created ');
for i:=0 to LengthImageArray-1 do
begin
ArrTabSheet[i]:= TTabSheet.Create(PC);
ArrTabSheet[i].Caption := '¹ '+IntToStr(i + 1) + ' - ' + ArrFileName[i];
ArrTabSheet[i].Width := 50;
ArrTabSheet[i].Height := 20;
ArrTabSheet[i].PageControl:= PC;
ArrLabel[i]:= TLabel.Create(Panel1);
ArrLabel[i].Caption:= '33454554 _ ' + IntTostr(i);
ArrLabel[i].Parent :=ArrTabSheet[i];
ArrScrollBox[i]:= TScrollBox.Create(Panel1);
ArrScrollBox[i].Parent :=ArrTabSheet[i];
ArrScrollBox[i].Align:= alClient;
ArrScrollBox[i].HorzScrollBar.Tracking:= true;
ArrScrollBox[i].HorzScrollBar.Range:=JPEGWidth[i];
ArrScrollBox[i].VertScrollBar.Range:=JPEGHeight[i];
ArrImage[i]:= TImage.Create(Panel1);
ArrImage[i].Parent :=ArrScrollBox[i];
ArrImage[i].Width:= ArrJPEG[i].Width;
ArrImage[i].Height:= ArrJPEG[i].Height;
ArrImage[i].Stretch := true;
ArrImage[i].Align:= alClient;
ArrImage[i].AutoSize:=true;
ArrImage[i].Proportional:= true;
ArrImage[i].Picture.Assign(ArrJPEG[i]);
ArrCurrJPEGWidth[i]:= JPEGWidth[i];
ArrCurrJPEGHeight[i]:= JPEGHeight[i];
bPrint.Enabled:= true;
bSmall.Enabled:= true;
bBig.Enabled:= true;
bRename.Enabled:= true;
bDel.Enabled:= true;
end;
end;
-
> ifrau (20.08.08 16:19) [15]
Месье знает толк в извращениях!!!
(бурные аплодисменты, переходящие в овацию)
-
> brother © (20.08.08 14:29) [10]
> но код настолько тривиален
Это как сказать. Сразу видно, что ты подобную задачу не делал.
Чтобы работало быстро и правильно, надо много думать и много чего реализовывать.
-
-
> Германн (20.08.2008 14:16:06) [6]
Не треснет, теоритически можно вывести в среднем 1280х1024 фотографии. Не думаю, что у него столько есть, ведь здесь же никаких пальцев не хватит, истираются
-
> Это как сказать. Сразу видно, что ты подобную задачу не
> делал.
Самый простой код ;)