📄 iemview.pas
字号:
fSelectedItem: integer; // selected image index (-1 none)
fVisibleSelection: boolean;
fSelectionWidth: integer; // selection width with focus
fSelectionWidthNoFocus: integer; // selection width without focus
fSelectionColor: TColor; // selection color
fOnImageSelect: TIEImageSelectEvent;
fOnImageDeselect: TIEImageSelectEvent;
fMouseInteract: TIEMMouseInteract;
fKeyInteract: TIEMKeyInteract;
fSelectedBitmap: TIEBitmap;
fImageCacheSize: integer; // stored in fImageList.MaxImagesInMemory
fMultiSelecting: boolean;
fEnableMultiSelect: boolean;
fHaveMultiselected: boolean; // last mouseMove has selected images
fSelectInclusive: boolean; // when true reselecting an image doesn't unselect it
fMultiSelectionOptions: TIEMultiSelectionOptions;
fSelectImages: boolean; // if true we are inside BeginSelectImages and EndSelectImages
fChangedSel: boolean; // true if the selected is changed
// Play
fPlaying: boolean; // true=play actived
fPlayTimer: integer; // handle del timer (0=not allocated)
fPlayLoop: boolean; // when True executes in loop
fTimerInProgress: boolean;
fFrame: integer; // current frame on single image mode
fSaveDM: TIEMDisplayMode; // displaymode before the animation
fSaveSel: integer; // SelectedImage before the play
// Following three fields are used by TImageEnMIO to get it updated on added or removed images.
fLastImOp: integer; // last operation of insert(1)/delete(2)/move(3)/swap(4) (0=no op)
fLastImIdx: integer; // index of processed image by fLastImOp
fLastImP1:integer; // param 1
// transition effects
fTransition: TIETransitionEffects; // effect engine
fTransitionEffect: TIETransitionType; // transition type
fTransitionDuration: integer; // transition duration ms
//
fOnProgress: TIEProgressEvent;
fOnBeforeImageDraw: TIEImageDrawEvent;
fOnBeforeImageDrawEx:TIEImageDrawEventEx;
fEnableImageCaching: boolean;
fSoftShadow: TIEVSoftShadow;
fChessboardSize: integer;
fChessboardBrushStyle: TBrushStyle;
fGradientEndColor: TColor;
fShowText: boolean;
fSetUpperGap, fSetBottomGap: integer;
fFlatScrollBars:boolean;
fThumbnailFrame:TIEBitmap;
fThumbnailFrameSelected:TIEBitmap;
fThumbnailFrameRect:TRect;
fDragging:boolean;
fMultiOnDemands:TList; // list of TImageEnIO for on demand multi page
fMaintainInvisibleImages:integer; // how much invisible images maintain when they are loaded on demand (-1 = maintain all)
fLookAhead:integer;
fOnAllDisplayed:TNotifyEvent; // when all images are displayed
fAllDisplayed:boolean;
fUserAction:boolean; // if true user has made an action with mouse or keyboard, events fire
fOnFinishWork: TNotifyEvent;
procedure GetMaxViewXY(var mx, my: integer);
procedure SetViewX(v: integer);
procedure SetViewY(v: integer);
function GetImageX(idx: integer): integer;
function GetImageY(idx: integer): integer;
function GetImageCol(idx: integer): integer;
function GetImageRow(idx: integer): integer;
procedure SetThumbWidth(v: integer);
procedure SetThumbHeight(v: integer);
function GetImageCount: integer;
procedure SetImageFileName(idx: integer; v: string);
function GetImageFileName(idx: integer): string;
procedure SetImageID(idx, v: integer);
function GetImageID(idx: integer): integer;
procedure SetHorizBorder(v: integer);
procedure SetVertBorder(v: integer);
function DeleteImageNU(idx: integer): boolean;
procedure SetVisibleSelection(v: boolean);
procedure SetSelectionWidth(v: integer);
procedure SetSelectionWidthNoFocus(v: integer);
procedure SetSelectionColor(v: TColor);
procedure SetSelectedItem(v: integer);
procedure SetBottomGap(v: integer);
procedure SetUpperGap(v: integer);
procedure SetImageBackground(idx: integer; v: TColor);
function GetImageBackground(idx: integer): TColor;
procedure SetImageDelayTime(idx: integer; v: integer);
function GetImageDelayTime(idx: integer): integer;
function ObtainImageNow(idx: integer): boolean;
function ObtainImageThreaded(idx: integer): boolean;
procedure SetDisplayMode(v: TIEMDisplayMode);
procedure SetGridWidth(v: integer);
procedure SetPlaying(v: boolean);
procedure PlayFrame;
procedure SetSelectedItemNU(v: integer);
procedure DeselectNU;
procedure SetVisibleFrame(v: integer);
function GetMouseInteract: TIEMMouseInteract;
function GetKeyInteract: TIEMKeyInteract;
procedure SetRemoveCorrupted(v: boolean);
procedure SetDrawImageBackground(v: boolean);
function GetScrollBarsAlwaysVisible: boolean;
procedure SetScrollBarsAlwaysVisible(v: boolean);
procedure SetImageCacheSize(v: integer);
function GetTransitionRunning: boolean;
function GetImageTopText(idx: integer): TIEMText;
function GetImageBottomText(idx: integer): TIEMText;
function GetImageInfoText(idx: integer): TIEMText;
procedure SetStyle(value: TIEMStyle);
procedure SetSelectionStyle(value: TIESStyle);
procedure SetEnableMultiSelect(Value: boolean);
function GetMultiSelectedImages(index: integer): integer;
function GetMultiSelectedImagesCount: integer;
procedure SetThumbnailsBorderWidth(Value: integer);
procedure SetThumbnailsBorderColor(Value: TColor);
procedure SetThumbnailsInternalBorder(Value: boolean);
procedure SetThumbnailsInternalBorderColor(Value: TColor);
procedure SetEnableResamplingOnMinor(Value: boolean);
procedure DrawImage(DestBitmap: TBitmap; info: PIEImageInfo; IsSelected: boolean; Index: integer);
procedure ThreadFinish(Sender: TObject);
function GetImageBitCount(idx: integer): integer;
function GetMaximumViewX: integer;
function GetMaximumViewY: integer;
procedure SetEnableImageCaching(v: boolean);
function SetImageFromStreamOrFile(idx: integer; Stream: TStream; const FileName: string): boolean;
procedure SetEnableAlphaChannel(v: boolean);
procedure SetBackgroundStyle(v: TIEBackgroundStyle);
procedure SetThumbnailsBackgroundStyle(v: TIEBackgroundStyle);
procedure SetGradientEndColor(Value: TColor);
procedure SetFillThumbnail(Value: boolean);
procedure SetShowText(Value: boolean);
{$ifdef IEINCLUDEFLATSB}
procedure SetFlatScrollBars(Value:boolean);
{$endif}
function GetJobsRunning:integer;
function GetJobsWaiting:integer;
function SortCompareFunction(index1,index2:integer):integer;
function GetOnDemandIO(const filename:string; var FrameIndex:integer):TImageEnIO;
procedure ClearOnDemandIOList;
procedure LoadMultiOnDemand(io:TImageEnIO; frameindex:integer; var dt:integer);
function IsOnDemand(info:PIEImageInfo):boolean;
function IsLookAhead(idx:integer):boolean;
procedure SetOnFinishWork(v:TNotifyEvent); virtual;
function GetOnFinishWork:TNotifyEvent; virtual;
function GetImageEnVersion:string;
procedure SetImageEnVersion(Value:string);
protected
///////////////////////
// P R O T E C T E D
//
// encapsulated components
fImageEnMIO: TImageEnMIO;
fImageEnProc: TImageEnProc;
// selections
fMultiSelectedImages: TList; // array of selected images (pointer=integer=index of the selected image)
//
function GetImageEnMIO: TImageEnMIO; virtual;
function GetImageEnProc: TImageEnProc; virtual;
procedure SetScrollBars(v: TScrollStyle); virtual;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND;
procedure WMVScroll(var Message: TMessage); message WM_VSCROLL;
procedure WMHScroll(var Message: TMessage); message WM_HSCROLL;
procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
procedure CMWantSpecialKey(var Msg: TCMWantSpecialKey); message CM_WANTSPECIALKEY;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS;
procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;
procedure WMMouseWheel(var Message: TMessage); message WM_MOUSEWHEEL;
procedure ViewChange(c: integer); virtual;
function PaletteChanged(Foreground: Boolean): Boolean; override;
procedure SetBackGround(cl: TColor); override;
function GetFBitmap: TBitmap; override;
function GetIEBitmap: TIEBitmap; override;
procedure SetMouseInteract(v: TIEMMouseInteract); virtual;
procedure SetKeyInteract(v: TIEMKeyInteract); virtual;
function GetImageWidth(idx: integer): integer;
function GetImageHeight(idx: integer): integer;
function GetImageOriginalWidth(idx: integer): integer;
function GetImageOriginalHeight(idx: integer): integer;
procedure SetImageOriginalWidth(idx: integer; Value: integer);
procedure SetImageOriginalHeight(idx: integer; Value: integer);
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure SelectAtPos(X, Y: integer; Shift: TShiftState);
procedure SetWallPaper(Value: TPicture);
procedure SetWallPaperStyle(Value: TIEWallPaperStyle);
function GetHasAlphaChannel: boolean; override;
function GetAlphaChannel: TIEBitmap; override;
procedure SetOnProgress(v: TIEProgressEvent); virtual;
function GetOnProgress: TIEProgressEvent; virtual;
procedure ClearThreadsAndRequests; virtual;
procedure ClearCache;
procedure DoWrongImage(OutBitmap: TIEBitmap; idx: integer); virtual;
procedure DoImageSelect(idx: integer); virtual;
procedure DoImageDeselect(idx: integer); virtual;
{$ifdef IEDOTNETVERSION}
procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
{$endif}
procedure SwapImages(idx1,idx2:integer);
public
/////////////////////
// P U B L I C
constructor Create(Owner: TComponent); override;
destructor Destroy; override;
// display
procedure Update; override;
procedure UpdateEx(UpdateCache:boolean);
procedure PaintTo(DestBitmap: TBitmap); virtual;
procedure Paint; override;
property ClientWidth;
property ClientHeight;
property ViewX: integer read fViewX write SetViewX;
property ViewY: integer read fViewY write SetViewY;
property MaximumViewX: integer read GetMaximumViewX;
property MaximumViewY: integer read GetMaximumViewY;
procedure SetViewXY(x, y: integer);
procedure CenterSelected;
procedure CenterFrame;
procedure LockPaint; override;
function UnLockPaint: integer; override;
function NPUnLockPaint: integer; override;
{!!
<FS>TImageEnMView.LockPaintCount
<FM>Declaration<FC>
property LockPaintCount:integer;
<FM>Description<FN>
Returns lock painting state. 0=no lock, >0 locking.
<A TImageEnMView.LockPaint> increases <A TImageEnMView.LockPaintCount>, <A TImageEnMView.UnLockPaint> decreases it.
!!}
property LockPaintCount: integer read fLockPaint;
{!!
<FS>TImageEnMView.SoftShadow
<FM>Declaration<FC>
property SoftShadow:<A TIEVSoftShadow>;
<FM>Description<FN>
SoftShadow allows painting a shadow under the thumbnails.
<IMG help_images\71.bmp>
<FM>Example<FC>
ImageEnMView.EnableAlphaChannel:=True;
ImageEnMView.SoftShadow.Enabled:=True;
!!}
property SoftShadow: TIEVSoftShadow read fSoftShadow;
procedure SetChessboardStyle(Size: integer; BrushStyle: TBrushStyle);
property GradientEndColor: TColor read fGradientEndColor write SetGradientEndColor;
property FillThumbnail: boolean read fFillThumbnail write SetFillThumbnail;
{!!
<FS>TImageEnMView.ThumbsRounded
<FM>Declaration<FC>
property ThumbsRounded:integer;
<FM>Description<FN>
If ThumbsRounded >0 it specifies that the image corners are rounded.
You get maximum round with little values, while large values makes little rounds.
<FM>Example<FC>
ImageEnMView1.ThumbsRounded:=5;
!!}
property ThumbsRounded:integer read fThumbsRounded write fThumbsRounded;
procedure SetPresetThumbnailFrame(PresetIndex:integer; UnSelectedColor:TColor; SelectedColor:TColor);
{!!
<FS>TImageEnMView.ThumbnailFrame
<FM>Declaration<FC>
property ThumbnailFrame:<A TIEBitmap>;
<FM>Description<FN>
Specifies a bitmap to display under the thumbnail.
<FM>Examples<FC>
ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
property ThumbnailFrame:TIEBitmap read fThumbnailFrame write fThumbnailFrame;
{!!
<FS>TImageEnMView.ThumbnailFrameSelected
<FM>Declaration<FC>
property ThumbnailFrameSelected:<A TIEBitmap>;
<FM>Description<FN>
Specifies a bitmap to display under the thumbnail when it is selected.
<FM>Examples<FC>
ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
property ThumbnailFrameSelected:TIEBitmap read fThumbnailFrameSelected write fThumbnailFrameSelected;
{!!
<FS>TImageEnMView.ThumbnailFrameRect
<FM>Declaration<FC>
property ThumbnailFrameRect:TRect;
<FM>Description<FN>
Using <A TImageEnMView.ThumbnailFrameSelected> and <A TImageEnMView.ThumbnailFrame>, this property specifies where the image (the thumbnail) will be drawn.
<FM>Examples<FC>
ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
property ThumbnailFrameRect:TRect read fThumbnailFrameRect write fThumbnailFrameRect;
// others
property MouseCapture;
procedure Assign(Source: TPersistent); override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
function GetLastOp: integer;
function GetLastOpIdx: integer;
function GetLastOpP1: integer;
property ScrollBarsAlwaysVisible: boolean read GetScrollBarsAlwaysVisible write SetScrollBarsAlwaysVisible default false;
{!!
<FS>TImageEnMView.VScrollBarParams
<FM>Declaration<FC>
property VScrollBarParams:<A TIEScrollBarParams>;
<FM>Description<FN>
The VScrollBarParams property allows an application to customize the vertical scroll bar behavior like tracking (display refresh on mouse dragging), up/down buttons pixel scroll, pagedown/up pixel scroll.
<FM>Example<FC>
// disable tracking
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -