unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ieview, iexFolderMView, iemView, StdCtrls, ExtCtrls, iemio, imageenview, iexActionsFolder, ActiveX, ComCtrls, ShlObj, Menus, ActnList, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TForm1 = class(TForm) IEFolderMView: TImageEnFolderMView; pnlRight: TPanel; tmrUpdatePreview: TTimer; Splitter1: TSplitter; grpFolder: TGroupBox; edtFolder: TEdit; grpThumbSettings: TGroupBox; chkSoftShadow: TCheckBox; lblThumbnailClipping: TLabel; lblPercent: TLabel; btnSetClipping: TButton; lblTopText: TLabel; lblFileTypes: TLabel; cmbFileTypes: TComboBox; lblMask: TLabel; edtFileMask: TEdit; cmbTopText: TComboBox; lblInfoText: TLabel; cmbInfoText: TComboBox; lblBottomText: TLabel; cmbBottomText: TComboBox; btnRefresh: TButton; grpPreview: TGroupBox; chkShowHiddenFiles: TCheckBox; lblThumbSize: TLabel; lblX: TLabel; chkShowFileHint: TCheckBox; chkShowFolders: TCheckBox; btnSelectFolder: TButton; lblExample: TLabel; grpFolderSettings: TGroupBox; chkAscending: TCheckBox; lblSorting: TLabel; chkMonitorFolder: TCheckBox; chkUseSystemPopup: TCheckBox; chkDragDrop: TCheckBox; cmbSorting: TComboBox; grpFileOpSettings: TGroupBox; chkShowConfirmation: TCheckBox; chkShowProgress: TCheckBox; chkVerboseErrors: TCheckBox; chkSendToRecycleBin: TCheckBox; popSettings: TPopupMenu; pupLoadSettings: TMenuItem; popSaveSettings: TMenuItem; pnlPreview: TPanel; chkPreview: TCheckBox; ImageEnView1: TImageEnView; edtThumbWidth: TEdit; updThumbWidth: TUpDown; edtThumbHeight: TEdit; updThumbHeight: TUpDown; edtClipping: TEdit; updClipping: TUpDown; popThumbOptionsEx: TPopupMenu; pitShowIconForUnknownFormat: TMenuItem; pitShowIconWhileLoading: TMenuItem; pitShowShadowForIcons: TMenuItem; pitShowShadowForFolders: TMenuItem; lblThumbOptionsEx: TLabel; chkEnableSpecialFolders: TCheckBox; lblAlso: TLabel; btnOpenParent: TButton; N2: TMenuItem; pupIncludeSubFolders: TMenuItem; procedure btnOpenParentClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnRefreshClick(Sender: TObject); procedure btnSelectFolderClick(Sender: TObject); procedure btnSetClippingClick(Sender: TObject); procedure chkAscendingClick(Sender: TObject); procedure chkDragDropClick(Sender: TObject); procedure chkEnableSpecialFoldersClick(Sender: TObject); procedure chkMonitorFolderClick(Sender: TObject); procedure chkPreviewClick(Sender: TObject); procedure chkShowFileHintClick(Sender: TObject); procedure chkShowFoldersClick(Sender: TObject); procedure chkShowHiddenFilesClick(Sender: TObject); procedure chkSoftShadowClick(Sender: TObject); procedure chkUseSystemPopupClick(Sender: TObject); procedure cmbBottomTextChange(Sender: TObject); procedure cmbFileTypesChange(Sender: TObject); procedure cmbInfoTextChange(Sender: TObject); procedure cmbSortingChange(Sender: TObject); procedure cmbTopTextChange(Sender: TObject); procedure FileOpCtrlClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure IEFolderMViewFolderChanged(Sender: TObject); procedure IEFolderMViewImageSelect(Sender: TObject; idx: Integer); procedure lblThumbOptionsExMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure pitShowShadowForFoldersClick(Sender: TObject); procedure popSaveSettingsClick(Sender: TObject); procedure popThumbOptionsExPopup(Sender: TObject); procedure pupIncludeSubFoldersClick(Sender: TObject); procedure pupLoadSettingsClick(Sender: TObject); procedure spnClippingChange(Sender: TObject); procedure tmrUpdatePreviewTimer(Sender: TObject); private fSettingOps : Boolean; procedure ReadFolderSettings; procedure UpdateSelection; procedure InitializeControls; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {$R WindowsTheme.res} uses iexHelperfunctions, iexRegistryFunctions; procedure TForm1.btnOpenParentClick(Sender: TObject); begin IEFolderMView.OpenParentFolder; end; procedure TForm1.FormCreate(Sender: TObject); begin // The folder that will be shown on start up IEFolderMView.DefaultFolder := iedfMyPictures; // Or display a specific folder: IEFolderMView.Folder := 'C:\My Folder\'; // Allow dragging and dropping to/from Windows Explorer IEFolderMView.AutoDragFiles := [iedaMove, iedaCopy]; IEFolderMView.AutoDropFiles := [iedaMove, iedaCopy]; // Options for moving, copying, deleting and pasting files IEFolderMView.FileOperationOptions := [ieioShowConfirmation, ieioSendToRecycleBin, ieioShowProgress, ieioVerboseErrors]; // Quality of displayed thumbnails IEFolderMView.ThumbnailResampleFilter := rfNone; IEFolderMView.ThumbnailDisplayFilter := rfFastLinear; // What common folder behaviours should ImageEnFolderMView handle itself? IEFolderMView.FolderInteract := [ieboOpenFoldersOnDblClick, ieboLaunchImagesOnDblClick, ieboLaunchFilesOnDblClick, ieboEnableFolderShortcuts, ieboEnableFileShortcuts, ieboClickToSortColumns]; // Size of thumbnail IEFolderMView.ThumbWidth := 130; IEFolderMView.ThumbHeight := 130; // Gives best quality when loading files on demand IEFolderMView.StoreType := ietFastThumb; // Any files types to exlude, e.g. 'DOC' IEFolderMView.ExclusionMask := ''; // EXIF thumbnails can be faster, but quality cannot be guaranteed IEFolderMView.EnableLoadEXIFThumbnails := False; IEFolderMView.MultiSelectionOptions := [iemoRegion, iemoSelectOnRightClick, iemoOptimizeForDragging]; // File extensions to display if FileTypes = iefCustom IEFolderMView.FileTypesMask := 'jpg,jpeg,jpe'; // Sort order IEFolderMView.SortOrder := iesbFilenameWithoutPath; // Showing Folders, but not hidden files IEFolderMView.ShowFolders := True; IEFolderMView.ShowHiddenFiles := False; // Allow navigation up to desktop IEFolderMView.EnableSpecialFolders := True; // Use Windows Explorer Thumbnails for speed and caching IEFolderMView.EnableLoadExplorerThumbnails := True; // But ensure we have file params in case user display the image info IEFolderMView.IOOptionsEx := IEFolderMView.IOOptionsEx + [ ieixWantParams ]; // Speed up loading and filling by using the file extension rather than analyzing the content to determine its type IEFolderMView.IOOptionsEx := IEFolderMView.IOOptionsEx + [ ieixLoadOnlyByFileExt ]; // Make mouse wheel behave like Windows Explorer. Scrolls the control, or if Ctrl is pressed it changes the view IEFolderMView.MouseWheelParams.Action := iemwVScroll; IEFolderMView.MouseWheelParamsAlt.Action := iemwZoomView; end; procedure TForm1.btnRefreshClick(Sender: TObject); begin ReadFolderSettings; IEFolderMView.RefreshFileList; end; procedure TForm1.btnSelectFolderClick(Sender: TObject); begin ReadFolderSettings; IEFolderMView.PromptForFolder; end; procedure TForm1.btnSetClippingClick(Sender: TObject); begin IEFolderMView.ThumbWidth := StrToIntDef(edtThumbWidth.Text , IEFolderMView.ThumbWidth ); IEFolderMView.ThumbHeight := StrToIntDef(edtThumbHeight.Text , IEFolderMView.ThumbHeight ); IEFolderMView.ThumbnailClipping := StrToIntDef(edtClipping.Text , IEFolderMView.ThumbnailClipping ); btnSetClipping.Enabled := False; end; procedure TForm1.chkAscendingClick(Sender: TObject); begin IEFolderMView.SortAscending := chkAscending.checked; end; procedure TForm1.chkDragDropClick(Sender: TObject); begin if chkDragDrop.checked then begin IEFolderMView.AutoDragFiles := [iedaMove, iedaCopy]; IEFolderMView.AutoDropFiles := [iedaMove, iedaCopy]; end else begin IEFolderMView.AutoDragFiles := []; IEFolderMView.AutoDropFiles := []; end end; procedure TForm1.chkEnableSpecialFoldersClick(Sender: TObject); begin IEFolderMView.EnableSpecialFolders := chkEnableSpecialFolders.checked; end; procedure TForm1.chkMonitorFolderClick(Sender: TObject); begin IEFolderMView.AutoRefresh := chkMonitorFolder.checked; end; procedure TForm1.chkPreviewClick(Sender: TObject); begin if chkPreview.checked then IEFolderMView.FolderInteract := IEFolderMView.FolderInteract - [ieboLaunchImagesOnDblClick] else IEFolderMView.FolderInteract := IEFolderMView.FolderInteract + [ieboLaunchImagesOnDblClick]; UpdateSelection; end; procedure TForm1.chkShowFileHintClick(Sender: TObject); begin IEFolderMView.ShowThumbnailHint := chkShowFileHint.checked; end; procedure TForm1.chkShowFoldersClick(Sender: TObject); begin IEFolderMView.ShowFolders := chkShowFolders.checked; end; procedure TForm1.chkShowHiddenFilesClick(Sender: TObject); begin IEFolderMView.ShowHiddenFiles := chkShowHiddenFiles.checked; end; procedure TForm1.chkSoftShadowClick(Sender: TObject); begin IEFolderMView.SoftShadow.Enabled := chkSoftShadow.checked; if IEFolderMView.SoftShadow.Enabled then begin IEFolderMView.SideGap := 0; IEFolderMView.UpperGap := 0; IEFolderMView.BottomGap := 0; end else begin IEFolderMView.SideGap := 6; IEFolderMView.UpperGap := 6; IEFolderMView.BottomGap := 6; end; IEFolderMView.RefreshFileList; end; procedure TForm1.chkUseSystemPopupClick(Sender: TObject); begin IEFolderMView.PopupMenuUseSystem := chkUseSystemPopup.Checked; end; procedure TForm1.cmbBottomTextChange(Sender: TObject); begin IEFolderMView.DefaultBottomText := TIEImageEnMViewDefaultText(cmbBottomText.ItemIndex); end; procedure TForm1.cmbFileTypesChange(Sender: TObject); begin edtFileMask.Enabled := TIEFolderFileTypes(cmbFileTypes.ItemIndex) = iefCustom; lblMask.Enabled := edtFileMask.Enabled; IEFolderMView.FileTypes := TIEFolderFileTypes(cmbFileTypes.ItemIndex); end; procedure TForm1.cmbInfoTextChange(Sender: TObject); begin IEFolderMView.DefaultInfoText := TIEImageEnMViewDefaultText(cmbInfoText.ItemIndex); end; procedure TForm1.cmbSortingChange(Sender: TObject); begin IEFolderMView.SortOrder := TIEImageEnMViewSortBy(cmbSorting.ItemIndex); end; procedure TForm1.cmbTopTextChange(Sender: TObject); begin IEFolderMView.DefaultTopText := TIEImageEnMViewDefaultText(cmbTopText.ItemIndex); end; procedure TForm1.FileOpCtrlClick(Sender: TObject); var FileOps : TIEFileOperationOptions; begin if fSettingOps then exit; FileOps := []; if chkShowConfirmation.checked then FileOps := FileOps + [ieioShowConfirmation]; if chkSendToRecycleBin.checked then FileOps := FileOps + [ieioSendToRecycleBin]; if chkShowProgress.checked then FileOps := FileOps + [ieioShowProgress]; if chkVerboseErrors.checked then FileOps := FileOps + [ieioVerboseErrors]; IEFolderMView.FileOperationOptions := FileOps; end; procedure TForm1.FormShow(Sender: TObject); begin InitializeControls; end; procedure TForm1.InitializeControls; begin fSettingOps := True; try chkMonitorFolder.checked := IEFolderMView.AutoRefresh; chkUseSystemPopup.Checked := IEFolderMView.PopupMenuUseSystem; chkAscending.checked := IEFolderMView.SortAscending; cmbBottomText.ItemIndex := Ord(IEFolderMView.DefaultBottomText); cmbInfoText.ItemIndex := Ord(IEFolderMView.DefaultInfoText); cmbTopText.ItemIndex := Ord(IEFolderMView.DefaultTopText); cmbSorting.ItemIndex := Ord(IEFolderMView.SortOrder); cmbFileTypes.ItemIndex := Ord(IEFolderMView.FileTypes); edtFileMask.Text := IEFolderMView.FileTypesMask; chkShowHiddenFiles.checked := IEFolderMView.ShowHiddenFiles; edtThumbWidth.Text := IntToStr(IEFolderMView.ThumbWidth); edtThumbHeight.Text := IntToStr(IEFolderMView.ThumbHeight); edtClipping.Text := IntToStr(IEFolderMView.ThumbnailClipping); chkShowFileHint.checked := IEFolderMView.ShowThumbnailHint; chkShowFolders.checked := IEFolderMView.ShowFolders; chkDragDrop.checked := IEFolderMView.AutoDragFiles <> []; chkShowConfirmation.checked := ieioShowConfirmation in IEFolderMView.FileOperationOptions; chkSendToRecycleBin.checked := ieioSendToRecycleBin in IEFolderMView.FileOperationOptions; chkShowProgress.checked := ieioShowProgress in IEFolderMView.FileOperationOptions; chkVerboseErrors.checked := ieioVerboseErrors in IEFolderMView.FileOperationOptions; btnSetClipping.Enabled := False; finally fSettingOps := False; end; end; procedure TForm1.IEFolderMViewFolderChanged(Sender: TObject); begin edtFolder.Text := IEFolderMView.Folder; btnOpenParent.Enabled := IEFolderMView.CanOpenParentFolder; end; procedure TForm1.IEFolderMViewImageSelect(Sender: TObject; idx: Integer); begin UpdateSelection; end; procedure TForm1.lblThumbOptionsExMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var lPoint: TPoint; begin lPoint := lblThumbOptionsEx.ClientToScreen(Point(0, lblThumbOptionsEx.Height)); popThumbOptionsEx.PopUp(lPoint.X, lPoint.Y); end; procedure TForm1.pitShowShadowForFoldersClick(Sender: TObject); var AItem : TIEMThumbnailOptionsExItems; begin AItem := TIEMThumbnailOptionsExItems(TControl(Sender).Tag); if AItem in IEFolderMView.ThumbnailOptionsEx then IEFolderMView.ThumbnailOptionsEx := IEFolderMView.ThumbnailOptionsEx - [AItem] else IEFolderMView.ThumbnailOptionsEx := IEFolderMView.ThumbnailOptionsEx + [AItem]; IEFolderMView.Update; end; procedure TForm1.popSaveSettingsClick(Sender: TObject); begin {$IFDEF Delphi2005orNewer} IEFolderMView.SaveToRegistry('Software\ImageEn\IEFolderMViewDemo'); {$ENDIF} end; procedure TForm1.popThumbOptionsExPopup(Sender: TObject); begin pitShowIconForUnknownFormat .Tag := ord(ietxShowIconForUnknownFormat); pitShowIconWhileLoading .Tag := ord(ietxShowIconWhileLoading ); pitShowShadowForIcons .Tag := ord(ietxShowShadowForIcons ); pitShowShadowForFolders .Tag := ord(ietxShowShadowForFolders ); pitShowIconForUnknownFormat .Checked := TIEMThumbnailOptionsExItems(pitShowIconForUnknownFormat.Tag) in IEFolderMView.ThumbnailOptionsEx; pitShowIconWhileLoading .Checked := TIEMThumbnailOptionsExItems(pitShowIconWhileLoading .Tag) in IEFolderMView.ThumbnailOptionsEx; pitShowShadowForIcons .Checked := TIEMThumbnailOptionsExItems(pitShowShadowForIcons .Tag) in IEFolderMView.ThumbnailOptionsEx; pitShowShadowForFolders .Checked := TIEMThumbnailOptionsExItems(pitShowShadowForFolders .Tag) in IEFolderMView.ThumbnailOptionsEx; pitShowShadowForIcons .Enabled := chkSoftShadow.checked; pitShowShadowForFolders .Enabled := chkSoftShadow.checked; end; procedure TForm1.pupIncludeSubFoldersClick(Sender: TObject); begin pupIncludeSubFolders.checked := not pupIncludeSubFolders.checked; IEFolderMView.IncludeSubFolders := pupIncludeSubFolders.checked; end; procedure TForm1.pupLoadSettingsClick(Sender: TObject); begin {$IFDEF Delphi2005orNewer} IEFolderMView.LoadFromRegistry('Software\ImageEn\IEFolderMViewDemo'); InitializeControls; {$ENDIF} end; procedure TForm1.ReadFolderSettings; begin IEFolderMView.FileTypesMask := edtFileMask.Text; end; procedure TForm1.spnClippingChange(Sender: TObject); begin btnSetClipping.Enabled := True; end; procedure TForm1.tmrUpdatePreviewTimer(Sender: TObject); begin tmrUpdatePreview.Enabled := False; if chkPreview.checked = False then ImageEnView1.Blank else if ImageEnView1.IO.Params.Filename <> IEFolderMView.SelectedFilename then begin if IEFolderMView.SelectedFilename = '' then ImageEnView1.Blank else ImageEnView1.IO.LoadFromFile(IEFolderMView.SelectedFilename); end; end; procedure TForm1.UpdateSelection; begin tmrUpdatePreview.Enabled := False; tmrUpdatePreview.Enabled := True; end; end.