unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ieview, iexFolderMView, iemview, StdCtrls, ExtCtrls, iemio, imageenview, ComCtrls, ShlObj, Menus, ActnList, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TForm1 = class(TForm) pnlRight: TPanel; tmrUpdatePreview: TTimer; Splitter1: TSplitter; grpFolder: TGroupBox; edtFolder: TEdit; grpThumbSettings: TGroupBox; lblThumbnailClipping: TLabel; lblPercent: TLabel; btnSetLayout: TButton; lblFileTypes: TLabel; cmbFileTypes: TComboBox; grpPreview: TGroupBox; lblThumbSize: TLabel; lblX: TLabel; btnSelectFolder: TButton; grpDisplayStyle: TGroupBox; pnlPreview: TPanel; chkPreview: TCheckBox; ImageEnView1: TImageEnView; edtThumbWidth: TEdit; updThumbWidth: TUpDown; edtThumbHeight: TEdit; updThumbHeight: TUpDown; edtClipping: TEdit; updClipping: TUpDown; btnOpenParent: TButton; rdbShowThumbs: TRadioButton; rdbShowDetails: TRadioButton; rdbShowColumns: TRadioButton; lblThumbZoom: TLabel; edtThumbZoom: TEdit; updThumbZoom: TUpDown; lblBottomGap: TLabel; edtBottomGap: TEdit; updBottomGap: TUpDown; lblUpperGap: TLabel; edtUpperGap: TEdit; updUpperGap: TUpDown; lblSideGap: TLabel; edtSideGap: TEdit; updSideGap: TUpDown; lblTextMargin: TLabel; edtTextMargin: TEdit; updTextMargin: TUpDown; lblVertBorder: TLabel; edtVertBorder: TEdit; updVertBorder: TUpDown; lblHorizBorder: TLabel; edtHorizBorder: TEdit; updHorizBorder: TUpDown; Label1: TLabel; grpOtherSettings: TGroupBox; lblTopText: TLabel; lblInfoText: TLabel; lblBottomText: TLabel; chkSoftShadow: TCheckBox; cmbTopText: TComboBox; cmbInfoText: TComboBox; cmbBottomText: TComboBox; chkCenterThumbs: TCheckBox; chkThumbnailBorder: TCheckBox; edtTopWidth: TEdit; updTopWidth: TUpDown; edtInfoWidth: TEdit; updInfoWidth: TUpDown; edtBottomWidth: TEdit; updBottomWidth: TUpDown; lblTopWidth: TLabel; lblInfoWidth: TLabel; lblBottomWidth: TLabel; lblWidthAuto: TLabel; lblTextWidthAuto: TLabel; lblTextWidth: TLabel; edtTextWidth: TEdit; updTextWidth: TUpDown; ImageEnMView1: TImageEnFolderMView; rdbShowLargeThumbs: TRadioButton; rdbShowFileList: TRadioButton; chkIconsOnly: TCheckBox; chkExplorerThumbs: TCheckBox; procedure btnOpenParentClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnSelectFolderClick(Sender: TObject); procedure btnSetLayoutClick(Sender: TObject); procedure chkPreviewClick(Sender: TObject); procedure chkCenterThumbsClick(Sender: TObject); procedure chkExplorerThumbsClick(Sender: TObject); procedure chkIconsOnlyClick(Sender: TObject); procedure chkSoftShadowClick(Sender: TObject); procedure chkThumbnailBorderClick(Sender: TObject); procedure cmbBottomTextChange(Sender: TObject); procedure cmbFileTypesChange(Sender: TObject); procedure cmbInfoTextChange(Sender: TObject); procedure cmbTopTextChange(Sender: TObject); procedure edtBottomWidthChange(Sender: TObject); procedure edtInfoWidthChange(Sender: TObject); procedure edtTopWidthChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure ImageEnMView1FolderChanged(Sender: TObject); procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); procedure rdbShowColumnsClick(Sender: TObject); procedure rdbShowDetailsClick(Sender: TObject); procedure rdbShowFileListClick(Sender: TObject); procedure rdbShowLargeThumbsClick(Sender: TObject); procedure rdbShowThumbsClick(Sender: TObject); procedure spnClippingChange(Sender: TObject); procedure tmrUpdatePreviewTimer(Sender: TObject); private procedure UpdateSelection; procedure InitializeControls; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {$R WindowsTheme.res} procedure TForm1.btnOpenParentClick(Sender: TObject); begin ImageEnMView1.OpenParentFolder; end; procedure TForm1.FormCreate(Sender: TObject); begin // NOTE: This demo uses a TImageEnFolderMView, but the style functionality is the same in TImageEnMView // The folder that will be shown on start up ImageEnMView1.DefaultFolder := iedfMyPictures; // Quality of displayed thumbnails ImageEnMView1.ThumbnailResampleFilter := rfNone; ImageEnMView1.ThumbnailDisplayFilter := rfFastLinear; // Size of thumbnail ImageEnMView1.ThumbWidth := 130; ImageEnMView1.ThumbHeight := 130; // Gives best quality when loading files on demand ImageEnMView1.StoreType := ietFastThumb; // EXIF thumbnails can be faster, but quality cannot be guaranteed ImageEnMView1.EnableLoadEXIFThumbnails := False; // Always get Params so text columns can display file dimensions even if we are loading icons/Explorer thumbnails ImageEnMView1.IOOptionsEx := ImageEnMView1.IOOptionsEx + [ ieixWantParams ]; // Initialize styles rdbShowThumbs.checked := True; end; procedure TForm1.btnSelectFolderClick(Sender: TObject); begin ImageEnMView1.PromptForFolder; end; procedure TForm1.btnSetLayoutClick(Sender: TObject); begin ImageEnMView1.LockUpdate; try ImageEnMView1.Zoom := StrToIntDef(edtThumbZoom.Text , Trunc( ImageEnMView1.Zoom )); ImageEnMView1.ThumbnailClipping := StrToIntDef(edtClipping.Text , ImageEnMView1.ThumbnailClipping ); ImageEnMView1.BottomGap := StrToIntDef(edtBottomGap.Text , ImageEnMView1.BottomGap ); ImageEnMView1.UpperGap := StrToIntDef(edtUpperGap.Text , ImageEnMView1.UpperGap ); ImageEnMView1.SideGap := StrToIntDef(edtSideGap.Text , ImageEnMView1.SideGap ); ImageEnMView1.TextMargin := StrToIntDef(edtTextMargin.Text , ImageEnMView1.TextMargin ); ImageEnMView1.VertBorder := StrToIntDef(edtVertBorder.Text , ImageEnMView1.VertBorder ); ImageEnMView1.HorizBorder := StrToIntDef(edtHorizBorder.Text , ImageEnMView1.HorizBorder ); ImageEnMView1.TextBlockWidth := StrToIntDef(edtTextWidth.Text , -1 ); ImageEnMView1.ThumbWidth := Trunc( StrToIntDef(edtThumbWidth.Text , ImageEnMView1.ThumbWidth )); ImageEnMView1.ThumbHeight := Trunc( StrToIntDef(edtThumbHeight.Text , ImageEnMView1.ThumbHeight )); btnSetLayout.Enabled := False; finally ImageEnMView1.UnlockUpdate; end; end; procedure TForm1.chkPreviewClick(Sender: TObject); begin if chkPreview.checked then ImageEnMView1.FolderInteract := ImageEnMView1.FolderInteract - [ieboLaunchImagesOnDblClick] else ImageEnMView1.FolderInteract := ImageEnMView1.FolderInteract + [ieboLaunchImagesOnDblClick]; UpdateSelection; end; procedure TForm1.chkCenterThumbsClick(Sender: TObject); begin if chkCenterThumbs.checked then ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxCenterThumbnailColumn ] else ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxCenterThumbnailColumn ]; end; procedure TForm1.chkExplorerThumbsClick(Sender: TObject); begin ImageEnMView1.EnableLoadExplorerThumbnails := chkExplorerThumbs.Checked; ImageEnMView1.Update; end; procedure TForm1.chkIconsOnlyClick(Sender: TObject); begin if chkIconsOnly.Checked then ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ] else ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ]; ImageEnMView1.Update; end; procedure TForm1.chkSoftShadowClick(Sender: TObject); begin ImageEnMView1.SoftShadow.Enabled := chkSoftShadow.checked; ImageEnMView1.RefreshFileList; end; procedure TForm1.chkThumbnailBorderClick(Sender: TObject); begin if chkThumbnailBorder.Checked then ImageEnMView1.ThumbnailsBorderWidth := 1 else ImageEnMView1.ThumbnailsBorderWidth := 0; end; procedure TForm1.cmbBottomTextChange(Sender: TObject); begin ImageEnMView1.DefaultBottomText := TIEImageEnMViewDefaultText(cmbBottomText.ItemIndex); end; procedure TForm1.cmbFileTypesChange(Sender: TObject); begin ImageEnMView1.FileTypes := TIEFolderFileTypes(cmbFileTypes.ItemIndex); end; procedure TForm1.cmbInfoTextChange(Sender: TObject); begin ImageEnMView1.DefaultInfoText := TIEImageEnMViewDefaultText(cmbInfoText.ItemIndex); end; procedure TForm1.cmbTopTextChange(Sender: TObject); begin ImageEnMView1.DefaultTopText := TIEImageEnMViewDefaultText(cmbTopText.ItemIndex); end; procedure TForm1.edtBottomWidthChange(Sender: TObject); begin ImageEnMView1.TextColumnWidths[ iemtpBottom ] := StrToIntDef( edtBottomWidth.Text, -1 ); end; procedure TForm1.edtInfoWidthChange(Sender: TObject); begin ImageEnMView1.TextColumnWidths[ iemtpInfo ] := StrToIntDef( edtInfoWidth.Text, -1 ); end; procedure TForm1.edtTopWidthChange(Sender: TObject); begin ImageEnMView1.TextColumnWidths[ iemtpTop ] := StrToIntDef( edtTopWidth.Text, -1 ); end; procedure TForm1.FormShow(Sender: TObject); begin InitializeControls; end; procedure TForm1.ImageEnMView1FolderChanged(Sender: TObject); begin edtFolder.Text := ImageEnMView1.Folder; btnOpenParent.Enabled := ImageEnMView1.CanOpenParentFolder; end; procedure TForm1.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); begin UpdateSelection; end; procedure TForm1.InitializeControls; var bTextIsSeparated, bTextInOwnColumns: Boolean; begin ImageEnMView1.SortOrder := iesbFilenameWithoutPath; cmbBottomText.ItemIndex := Ord( ImageEnMView1.DefaultBottomText ); cmbInfoText.ItemIndex := Ord( ImageEnMView1.DefaultInfoText ); cmbTopText.ItemIndex := Ord( ImageEnMView1.DefaultTopText ); cmbFileTypes.ItemIndex := Ord( ImageEnMView1.FileTypes ); edtThumbWidth.Text := IntToStr( Trunc( ImageEnMView1.ThumbWidth )); edtThumbHeight.Text := IntToStr( Trunc( ImageEnMView1.ThumbHeight )); edtThumbZoom.Text := IntToStr( Trunc( ImageEnMView1.Zoom )); edtBottomGap.Text := IntToStr( ImageEnMView1.BottomGap ); edtUpperGap.Text := IntToStr( ImageEnMView1.UpperGap ); edtSideGap.Text := IntToStr( ImageEnMView1.SideGap ); edtTextMargin.Text := IntToStr( ImageEnMView1.TextMargin ); edtVertBorder.Text := IntToStr( ImageEnMView1.VertBorder ); edtHorizBorder.Text := IntToStr( ImageEnMView1.HorizBorder ); edtClipping.Text := IntToStr(ImageEnMView1.ThumbnailClipping); chkCenterThumbs.checked := ietxCenterThumbnailColumn in ImageEnMView1.ThumbnailOptionsEx; chkThumbnailBorder.Checked := ImageEnMView1.ThumbnailsBorderWidth > 0; chkIconsOnly.Checked := ietxOnlyShowIcons in ImageEnMView1.ThumbnailOptionsEx; bTextIsSeparated := ImageEnMView1.Style in [ iemsFlatAndWide, iemsColumns ]; lblTextWidth .Enabled := bTextIsSeparated; edtTextWidth .Enabled := bTextIsSeparated; updTextWidth .Enabled := bTextIsSeparated; lblTextWidthAuto .Enabled := bTextIsSeparated; edtTextWidth.Text := IntToStr( ImageEnMView1.TextBlockWidth ); bTextInOwnColumns := ImageEnMView1.Style in [ iemsColumns ]; lblTopWidth .Enabled := bTextInOwnColumns; edtTopWidth .Enabled := bTextInOwnColumns; updTopWidth .Enabled := bTextInOwnColumns; lblInfoWidth .Enabled := bTextInOwnColumns; edtInfoWidth .Enabled := bTextInOwnColumns; updInfoWidth .Enabled := bTextInOwnColumns; lblBottomWidth .Enabled := bTextInOwnColumns; edtBottomWidth .Enabled := bTextInOwnColumns; updBottomWidth .Enabled := bTextInOwnColumns; lblWidthAuto .Enabled := bTextInOwnColumns; edtTopWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpTop ] ); edtInfoWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpInfo ] ); edtBottomWidth.Text := IntToStr( ImageEnMView1.TextColumnWidths[ iemtpBottom ] ); btnSetLayout.Enabled := False; end; procedure TForm1.rdbShowThumbsClick(Sender: TObject); begin { Note: A quick way to do all of this is: ImageEnMView1.SetStyleEx( iemsFlat, iedtNone, iedtNone, iedtFileName ); } ImageEnMView1.LockUpdate; try ImageEnMView1.Style := iemsFlat; ImageEnMView1.Zoom := 100; ImageEnMView1.TextMargin := 4; ImageEnMView1.TopTextFont.Style := []; ImageEnMView1.DefaultTopText := iedtNone; ImageEnMView1.DefaultInfoText := iedtNone; ImageEnMView1.DefaultBottomText := iedtFileName; ImageEnMView1.ThumbnailsBorderWidth := 1; ImageEnMView1.VertBorder := 8; ImageEnMView1.HorizBorder := 8; ImageEnMView1.BottomGap := 4; ImageEnMView1.UpperGap := 4; ImageEnMView1.SideGap := 4; ImageEnMView1.GridWidth := -1; ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ]; finally ImageEnMView1.UnlockUpdate; InitializeControls; end; end; procedure TForm1.rdbShowDetailsClick(Sender: TObject); begin { Note: A quick way to do all of this is: ImageEnMView1.SetStyleEx( iemsFlatAndWide, iedtFileName, iedtFilePath, iedtImageDimAndSize ); } ImageEnMView1.LockUpdate; try ImageEnMView1.Style := iemsFlatAndWide; ImageEnMView1.Zoom := 50; ImageEnMView1.TextMargin := 4; ImageEnMView1.TextBlockWidth := 300; ImageEnMView1.TopTextFont.Style := [ fsBold ]; ImageEnMView1.DefaultTopText := iedtFileName; ImageEnMView1.DefaultInfoText := iedtFilePath; ImageEnMView1.DefaultBottomText := iedtImageDimAndSize; ImageEnMView1.ThumbnailsBorderWidth := 1; ImageEnMView1.VertBorder := 8; ImageEnMView1.HorizBorder := 8; ImageEnMView1.BottomGap := 4; ImageEnMView1.UpperGap := 4; ImageEnMView1.SideGap := 4; ImageEnMView1.GridWidth := -1; ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ]; finally ImageEnMView1.UnlockUpdate; InitializeControls; end; end; procedure TForm1.rdbShowColumnsClick(Sender: TObject); begin { Note: A quick way to do all of this is: ImageEnMView1.SetStyleEx( iemsColumns, iedtFileName, iedtImageDimAndSize, iedtFileCreateDate ); } ImageEnMView1.LockUpdate; try ImageEnMView1.Style := iemsColumns; ImageEnMView1.Zoom := 17; ImageEnMView1.TextMargin := 6; ImageEnMView1.TextBlockWidth := -1; ImageEnMView1.TopTextFont.Style := []; ImageEnMView1.DefaultTopText := iedtFileName; ImageEnMView1.DefaultInfoText := iedtImageDimAndSize; ImageEnMView1.DefaultBottomText := iedtFileCreateDate; ImageEnMView1.ThumbnailsBorderWidth := 0; ImageEnMView1.VertBorder := 0; ImageEnMView1.HorizBorder := 0; ImageEnMView1.BottomGap := 2; ImageEnMView1.UpperGap := 2; ImageEnMView1.SideGap := 2; ImageEnMView1.GridWidth := -1; ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ]; finally ImageEnMView1.UnlockUpdate; InitializeControls; end; end; procedure TForm1.rdbShowFileListClick(Sender: TObject); begin { Note: A quick way to do all of this is: ImageEnMView1.GridWidth := 1 ImageEnMView1.SetStyleEx( iemsFlatAndWide, iedtNone, iedtNone, iedtFileName, -24 ); } ImageEnMView1.LockUpdate; try ImageEnMView1.Style := iemsFlatAndWide; ImageEnMView1.Zoom := 17; ImageEnMView1.TextMargin := 4; ImageEnMView1.TextBlockWidth := 300; ImageEnMView1.TopTextFont.Style := [ fsBold ]; ImageEnMView1.DefaultTopText := iedtNone; ImageEnMView1.DefaultInfoText := iedtNone; ImageEnMView1.DefaultBottomText := iedtFileName; ImageEnMView1.ThumbnailsBorderWidth := 0; ImageEnMView1.VertBorder := 0; ImageEnMView1.HorizBorder := 0; ImageEnMView1.BottomGap := 2; ImageEnMView1.UpperGap := 2; ImageEnMView1.SideGap := 2; ImageEnMView1.GridWidth := 1; ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx + [ ietxOnlyShowIcons ]; finally ImageEnMView1.UnlockUpdate; InitializeControls; end; end; procedure TForm1.rdbShowLargeThumbsClick(Sender: TObject); begin { Note: A quick way to do all of this is: ImageEnMView1.SetStyleEx( iemsFlat, iedtNone, iedtNone, iedtFileName, 200 ); } ImageEnMView1.LockUpdate; try ImageEnMView1.Style := iemsFlat; ImageEnMView1.Zoom := 200; ImageEnMView1.TextMargin := 4; ImageEnMView1.TopTextFont.Style := []; ImageEnMView1.DefaultTopText := iedtNone; ImageEnMView1.DefaultInfoText := iedtNone; ImageEnMView1.DefaultBottomText := iedtFileName; ImageEnMView1.ThumbnailsBorderWidth := 1; ImageEnMView1.VertBorder := 8; ImageEnMView1.HorizBorder := 8; ImageEnMView1.BottomGap := 4; ImageEnMView1.UpperGap := 4; ImageEnMView1.SideGap := 4; ImageEnMView1.GridWidth := -1; ImageEnMView1.ThumbnailOptionsEx := ImageEnMView1.ThumbnailOptionsEx - [ ietxOnlyShowIcons ]; finally ImageEnMView1.UnlockUpdate; InitializeControls; end; end; procedure TForm1.spnClippingChange(Sender: TObject); begin btnSetLayout.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 <> ImageEnMView1.SelectedFilename then begin if ImageEnMView1.SelectedFilename = '' then ImageEnView1.Blank else ImageEnView1.IO.LoadFromFile(ImageEnMView1.SelectedFilename); end; end; procedure TForm1.UpdateSelection; begin tmrUpdatePreview.Enabled := False; tmrUpdatePreview.Enabled := True; end; end.