Y
yukaikai
Unregistered / Unconfirmed
GUEST, unregistred user!
以下是程序代码:
{
Thumbnail Browser Example by Boern Ischo (www.b-zone.de)
A very simple example on how to create a thumbnail image browser.
There's a lot of stuff to do to use this for a serious program, but
I thought beginners might be interested in this. You're welcome to
send my any questions or comments on this to bjoern@ischo.de
Public Domain. Feel free to use this code in any way you like.
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, FileCtrl, StdCtrls,jpeg;
type
TForm1 = class(TForm)
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
ScrollBox1: TScrollBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure DirectoryListBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type tbi_thumb=class(tcustomcontrol)
fmypic : tjpegimage;
private
procedure getpic(value:tjpegimage);
public
procedure paint; override;
constructor create(aowner:tcomponent); override;
destructor destroy; override;
published
property pic:tjpegimage write getpic;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var buffer_jpeg:tjpegimage;
//a simple class for thumbnails...
constructor tbi_thumb.create(aowner:tcomponent);
begin
inherited;
fmypic:=tjpegimage.create;
end;
destructor tbi_thumb.destroy;
begin
inherited;
fmypic.free;
end;
procedure tbi_thumb.getpic(value:tjpegimage);
begin
fmypic.scale:=jshalf;
fmypic.assign(value);
fmypic.dibneeded;
end;
procedure tbi_thumb.paint;
var arect : trect;
ratio : single;
begin
arect:=clientrect;
canvas.stretchdraw(arect,fmypic);
frame3d(canvas,arect,clblack,clwhite,2);
end;
//*<----------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
buffer_jpeg:=tjpegimage.create;
buffer_jpeg.Performance:=jpbestspeed;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
buffer_jpeg.free;
while scrollbox1.ComponentCount>0 do
scrollbox1.components[0].free;
end;
procedure TForm1.DirectoryListBox1Change(Sender: TObject);
var i,x,y : integer;
anewthumb : tbi_thumb;
foundlist : tstringlist;
sr : TSearchRec;
begin
foundlist:=tstringlist.create;
try
//look for jpg files
if FindFirst(directorylistbox1.Directory+'/*.jpg', faAnyFile, sr) = 0 then
begin
foundlist.add(sr.name);
while FindNext(sr) = 0 do
foundlist.add(sr.name);
FindClose(sr);
end;
x:=0;
y:=0;
//create the thumbnails
for i:=0 to FoundList.count-1 do
begin
anewthumb:=tbi_thumb.create(self);
buffer_jpeg.loadfromfile(foundlist);
with anewthumb do begin
pic:=buffer_jpeg;
parent:=scrollbox1;
left:=x;
top:=y;
width:=120;
height:=90;
visible:=true;
inc(x,122);
if x>244 then
begin x:=0; inc(y,92); end;
application.processmessages;
end;
end;
finally foundlist.free; end;
end;
end.
{
Thumbnail Browser Example by Boern Ischo (www.b-zone.de)
A very simple example on how to create a thumbnail image browser.
There's a lot of stuff to do to use this for a serious program, but
I thought beginners might be interested in this. You're welcome to
send my any questions or comments on this to bjoern@ischo.de
Public Domain. Feel free to use this code in any way you like.
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, FileCtrl, StdCtrls,jpeg;
type
TForm1 = class(TForm)
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
ScrollBox1: TScrollBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure DirectoryListBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type tbi_thumb=class(tcustomcontrol)
fmypic : tjpegimage;
private
procedure getpic(value:tjpegimage);
public
procedure paint; override;
constructor create(aowner:tcomponent); override;
destructor destroy; override;
published
property pic:tjpegimage write getpic;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var buffer_jpeg:tjpegimage;
//a simple class for thumbnails...
constructor tbi_thumb.create(aowner:tcomponent);
begin
inherited;
fmypic:=tjpegimage.create;
end;
destructor tbi_thumb.destroy;
begin
inherited;
fmypic.free;
end;
procedure tbi_thumb.getpic(value:tjpegimage);
begin
fmypic.scale:=jshalf;
fmypic.assign(value);
fmypic.dibneeded;
end;
procedure tbi_thumb.paint;
var arect : trect;
ratio : single;
begin
arect:=clientrect;
canvas.stretchdraw(arect,fmypic);
frame3d(canvas,arect,clblack,clwhite,2);
end;
//*<----------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
buffer_jpeg:=tjpegimage.create;
buffer_jpeg.Performance:=jpbestspeed;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
buffer_jpeg.free;
while scrollbox1.ComponentCount>0 do
scrollbox1.components[0].free;
end;
procedure TForm1.DirectoryListBox1Change(Sender: TObject);
var i,x,y : integer;
anewthumb : tbi_thumb;
foundlist : tstringlist;
sr : TSearchRec;
begin
foundlist:=tstringlist.create;
try
//look for jpg files
if FindFirst(directorylistbox1.Directory+'/*.jpg', faAnyFile, sr) = 0 then
begin
foundlist.add(sr.name);
while FindNext(sr) = 0 do
foundlist.add(sr.name);
FindClose(sr);
end;
x:=0;
y:=0;
//create the thumbnails
for i:=0 to FoundList.count-1 do
begin
anewthumb:=tbi_thumb.create(self);
buffer_jpeg.loadfromfile(foundlist);
with anewthumb do begin
pic:=buffer_jpeg;
parent:=scrollbox1;
left:=x;
top:=y;
width:=120;
height:=90;
visible:=true;
inc(x,122);
if x>244 then
begin x:=0; inc(y,92); end;
application.processmessages;
end;
end;
finally foundlist.free; end;
end;
end.