Componentes.Terceros.Mustan.../official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.pas
david 778b05bf9f Importación inicial
- Mustangpeak Common Library - 1.7.0
  - EasyListview - 1.7.0

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.Mustangpeak@2 60b41242-d4b9-2247-b156-4ccd40706241
2007-09-11 08:33:06 +00:00

163 lines
4.4 KiB
ObjectPascal

unit Unit1;
interface
{$WARN UNIT_PLATFORM OFF}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, EasyListview, ImgList, ExtCtrls,
EasyScrollFrame, StdCtrls, FileCtrl, MPCommonUtilities, Jpeg,
MPCommonObjects;
type
TForm1 = class(TForm)
Panel1: TPanel;
EasyScrollButton2: TEasyScrollButton;
EasyScrollButton3: TEasyScrollButton;
EasyListview1: TEasyListview;
Image1: TImage;
Panel2: TPanel;
Button1: TButton;
Label1: TLabel;
procedure EasyListview1ItemThumbnailDraw(Sender: TCustomEasyListview;
Item: TEasyItem; ACanvas: TCanvas; ARect: TRect;
AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean);
procedure EasyScrollButton3Click(Sender: TObject);
procedure EasyScrollButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure EasyListview1ItemFreeing(Sender: TCustomEasyListview;
Item: TEasyItem);
procedure EasyListview1ItemSelectionChanged(
Sender: TCustomEasyListview; Item: TEasyItem);
private
{ Private declarations }
public
{ Public declarations }
Dir: String;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function IsImageFile(Filename: string): Boolean;
var
Ext: string;
begin
Ext := LowerCase(ExtractFileExt(Filename));
Result := (Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.jif') or
(Ext = '.bmp') or (Ext = '.wmf') or (Ext = '.emf') or (Ext = '.ico');
end;
procedure TForm1.EasyListview1ItemThumbnailDraw(
Sender: TCustomEasyListview; Item: TEasyItem; ACanvas: TCanvas;
ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean);
var
Picture: TPicture;
Bitmap: TBitmap;
Stream: TMemoryStream;
begin
Bitmap := TBitmap.Create;
try
// If the item doesn't have a thumbnail bitmap create one from the file
if (Item.Tag = 0) and FileExists(Item.Captions[1]) then
begin
Stream := TMemoryStream.Create;
Picture := TPicture.Create;
try
try
Picture.LoadFromFile(Item.Captions[1]);
Bitmap.Width := RectWidth(ARect);
Bitmap.Height := RectHeight(ARect);
Bitmap.Canvas.StretchDraw(Rect(0, 0, Bitmap.Width, Bitmap.Height), Picture.Graphic);
Bitmap.SaveToStream(Stream);
Item.Tag := Integer(Stream);
Stream := nil;
except
end
finally
Stream.Free;
Picture.Free;
end
end;
// Paint the thumbnail
if Item.Tag <> 0 then
begin
Stream := TMemoryStream(Item.Tag);
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
ACanvas.Draw(ARect.Left, ARect.Top, Bitmap);
end
finally
Bitmap.Free;
end;
end;
procedure TForm1.EasyScrollButton3Click(Sender: TObject);
begin
EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX + EasyListview1.CellSizes.Thumbnail.Width;
end;
procedure TForm1.EasyScrollButton2Click(Sender: TObject);
begin
EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX - EasyListview1.CellSizes.Thumbnail.Width;
end;
procedure TForm1.Button1Click(Sender: TObject);
procedure Add(Data: TWin32FindData);
var
Item: TEasyItem;
begin
if IsImageFile(Data.cFileName) then
begin
Item := EasyListview1.Items.Add();
Item.Caption := ExtractFileName(Data.cFileName);
Item.Captions[1] := Dir + '\' + Data.cFileName;
end;
end;
var
FindData: TWin32FindData;
FindHandle: THandle;
begin
if SelectDirectory('Browse for Picture Folder', '', Dir) then
begin
EasyListview1.BeginUpdate;
try
EasyListview1.Items.Clear;
FindHandle := FindFirstFile(PChar(Dir + '\*.*'), FindData);
if FindHandle <> INVALID_HANDLE_VALUE then
begin
Add(FindData);
while FindNextFile(FindHandle, FindData) do
Add(FindData);
Windows.FindClose(FindHandle);
end
finally
EasyListview1.EndUpdate();
end
end
end;
procedure TForm1.EasyListview1ItemFreeing(Sender: TCustomEasyListview;
Item: TEasyItem);
begin
if Item.Tag <> 0 then
TObject(Item.Tag).Free;
end;
procedure TForm1.EasyListview1ItemSelectionChanged(
Sender: TCustomEasyListview; Item: TEasyItem);
begin
if FileExists(Item.Captions[1]) then
Image1.Picture.LoadFromFile(Item.Captions[1])
end;
end.