Componentes.Terceros.Mustan.../official/1.7.0/EasyListview/Demos/Image CustomDraw/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

260 lines
8.3 KiB
ObjectPascal

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, EasyListview, StdCtrls, ExtCtrls, ImgList,
MPCommonUtilities, ActiveX, MPCommonObjects;
type
TForm1 = class(TForm)
EasyListview1: TEasyListview;
Panel1: TPanel;
cbViews: TComboBox;
ImageListSmall: TImageList;
ImageListLarge: TImageList;
ImageListExLarge: TImageList;
Checkbox1: TCheckBox;
ImageListGroups: TImageList;
ImageListHeader: TImageList;
procedure FormShow(Sender: TObject);
procedure cbViewsChange(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure EasyListview1ItemImageDrawIsCustom(
Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn;
var IsCustom: Boolean);
procedure EasyListview1ItemImageGetSize(Sender: TCustomEasyListview;
Item: TEasyItem; Column: TEasyColumn; var ImageWidth,
ImageHeight: Integer);
procedure EasyListview1ColumnImageDrawIsCustom(
Sender: TCustomEasyListview; Column: TEasyColumn;
var IsCustom: Boolean);
procedure EasyListview1ColumnImageGetSize(Sender: TCustomEasyListview;
Column: TEasyColumn; var ImageWidth, ImageHeight: Integer);
procedure EasyListview1GroupImageDrawIsCustom(
Sender: TCustomEasyListview; Group: TEasyGroup;
var IsCustom: Boolean);
procedure EasyListview1GroupImageGetSize(Sender: TCustomEasyListview;
Group: TEasyGroup; var ImageWidth, ImageHeight: Integer);
procedure EasyListview1OLEDragStart(Sender: TCustomEasyListview;
ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects;
var AllowDrag: Boolean);
procedure EasyListview1ColumnImageDraw(Sender: TCustomEasyListview;
Column: TEasyColumn; ACanvas: TCanvas;
const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender);
procedure EasyListview1GroupImageDraw(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender);
procedure EasyListview1ItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender);
procedure FormDestroy(Sender: TObject);
procedure CheckBoxUseBitmapClick(Sender: TObject);
private
{ Private declarations }
FLargeCustomImage: TBitmap;
FSmallCustomImage: TBitmap;
public
{ Public declarations }
procedure MapImageCustomImageSize(var ImageHeight, ImageWidth: Integer);
property LargeCustomImage: TBitmap read FLargeCustomImage write FLargeCustomImage;
property SmallCustomImage: TBitmap read FSmallCustomImage write FSmallCustomImage;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MapImageCustomImageSize(var ImageHeight,
ImageWidth: Integer);
begin
case EasyListview1.View of
elsIcon:
begin
ImageWidth := 32;
ImageHeight := 32;
end;
elsSmallIcon,
elsList,
elsReport,
elsGrid:
begin
ImageWidth := 16;
ImageHeight := 16;
end;
elsThumbnail,
elsFilmStrip,
elsTile:
begin
ImageWidth := 48;
ImageHeight := 48;
end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
i, j: Integer;
Group: TEasyGroup;
Item: TEasyItem;
Column: TEasyColumn;
begin
LargeCustomImage := TBitmap.Create;
LargeCustomImage.LoadFromFile('XPSearch.bmp');
SmallCustomImage := TBitmap.Create;
SmallCustomImage.LoadFromFile('XPSearch_Small.bmp');
FillStringsWithEasyListStyles(cbViews.Items);
cbViews.ItemIndex := Ord(EasyListview1.View);
for i := 0 to 10 do
begin
Group := EasyListview1.Groups.Add;
Group.Caption := 'Group: ' + IntToStr(i);
Group.ImageIndex := Random(ImageListGroups.Count);
Group.Tag := Integer(Random(clWhite));
for j := 0 to 10 do
begin
Item := Group.Items.Add;
if j mod 3 = 0 then
Item.Enabled := False;
Item.Caption := 'Group: ' + IntToStr(i) + ' - Item: ' + IntToStr(j);
Item.Captions[1] := 'Group: ' + IntToStr(i) + ' - Item: ' + IntToStr(j);
Item.ImageIndex := Random(ImageListSmall.Count);
Item.ImageIndexes[1] := Random(ImageListSmall.Count);
Item.Tag := Integer(Random(clWhite));
end
end;
for i := 0 to 1 do
begin
Column := EasyListview1.Header.Columns.Add;
Column.Width := 150;
Column.Caption := 'Column: ' + IntToStr(i);
Column.ImageIndex := Random(ImageListHeader.Count);
Column.Tag := Integer(Random(clWhite));
Column.AutoToggleSortGlyph := True;
end;
end;
procedure TForm1.cbViewsChange(Sender: TObject);
begin
EasyListview1.View := TEasyListStyle(cbViews.ItemIndex)
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if not Checkbox1.Checked then
begin
EasyListview1.ImagesSmall := ImageListSmall;
EasyListview1.ImagesLarge := ImageListLarge;
EasyListview1.ImagesExLarge := ImageListExLarge;
EasyListview1.ImagesGroup := ImageListGroups;
EasyListview1.Header.Images := ImageListHeader;
end else
begin
EasyListview1.ImagesSmall := nil;
EasyListview1.ImagesLarge := nil;
EasyListview1.ImagesExLarge := nil;
EasyListview1.ImagesGroup := nil;
EasyListview1.Header.Images := nil
end
end;
procedure TForm1.EasyListview1ItemImageDrawIsCustom(
Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn;
var IsCustom: Boolean);
begin
IsCustom := Checkbox1.Checked
end;
procedure TForm1.EasyListview1ItemImageGetSize(Sender: TCustomEasyListview;
Item: TEasyItem; Column: TEasyColumn; var ImageWidth,
ImageHeight: Integer);
begin
MapImageCustomImageSize(ImageWidth, ImageHeight)
end;
procedure TForm1.EasyListview1ColumnImageDrawIsCustom(
Sender: TCustomEasyListview; Column: TEasyColumn; var IsCustom: Boolean);
begin
IsCustom := Checkbox1.Checked
end;
procedure TForm1.EasyListview1ColumnImageGetSize(
Sender: TCustomEasyListview; Column: TEasyColumn; var ImageWidth,
ImageHeight: Integer);
begin
ImageWidth := 16;
ImageHeight := 16
end;
procedure TForm1.EasyListview1GroupImageDrawIsCustom(
Sender: TCustomEasyListview; Group: TEasyGroup; var IsCustom: Boolean);
begin
IsCustom := Checkbox1.Checked
end;
procedure TForm1.EasyListview1GroupImageGetSize(
Sender: TCustomEasyListview; Group: TEasyGroup; var ImageWidth,
ImageHeight: Integer);
begin
ImageWidth := 16;
ImageHeight := 16
end;
procedure TForm1.EasyListview1OLEDragStart(Sender: TCustomEasyListview;
ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects;
var AllowDrag: Boolean);
begin
AllowDrag := True;
end;
procedure TForm1.EasyListview1ColumnImageDraw(Sender: TCustomEasyListview;
Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject;
AlphaBlender: TEasyAlphaBlender);
begin
ACanvas.Brush.Color := TColor(Column.Tag);
ACanvas.FillRect(RectArray.IconRect);
end;
procedure TForm1.EasyListview1GroupImageDraw(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender);
var
H: Integer;
R: TRect;
begin
R := RectArray.IconRect;
ACanvas.Brush.Color := TColor(Group.Tag);
H := R.Bottom - R.Top;
Inc(R.Top, (H - 16) div 2);
Dec(R.Bottom, (H - 16) div 2);
ACanvas.FillRect(R);
end;
procedure TForm1.EasyListview1ItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender);
var
Image: TBitmap;
begin
if EasyListview1.View in [elsIcon, elsThumbnail, elsFilmStrip, elsTile] then
Image := LargeCustomImage
else begin
Image := SmallCustomImage;
Image.TransparentColor := clFuchsia;
Image.TransparentMode := tmFixed;
end;
Image.Transparent := True;
AlphaBlender.Blend(EasyListview1, Item, ACanvas, RectArray.IconRect, Image)
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SmallCustomImage.Free;
LargeCustomImage.Free;
end;
procedure TForm1.CheckBoxUseBitmapClick(Sender: TObject);
begin
EasyListview1.Invalidate;
end;
end.