unit Main; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, ToolWin, ImageEnProc, ImageEnIO, hyiedefs, IEOpenSaveDlg, ActnList, ieview, iexActionsMulti, iemview, ImgList, StdActns, ieSettings, hyieutils, iexBitmaps, AppEvnts, iexLayers, iexRulers; type TMainForm = class(TForm) MainMenu1: TMainMenu; StatusBar: TStatusBar; ActionList1: TActionList; ImageEnMView1: TImageEnMView; mnuView: TMenuItem; mnuEdit: TMenuItem; DeSelect: TImageEnMViewDeSelect; FitImage1: TMenuItem; Delect1: TMenuItem; N13: TMenuItem; miDeleteImage: TMenuItem; miPromptToAdd: TMenuItem; miClear: TMenuItem; N15: TMenuItem; CopyToClipboard: TImageEnMViewCopyToClipboard; FlipHorizontal: TImageEnMViewFlipHorizontal; FlipVertical: TImageEnMViewFlipVertical; PasteFromClipboard: TImageEnMViewPasteFromClipboard; Rotate180: TImageEnMViewRotate180; mnuImage: TMenuItem; CopytoClipboard1: TMenuItem; AdjustImageColors1: TMenuItem; FlipHorizontal1: TMenuItem; FlipVertical1: TMenuItem; PastefromClipboard1: TMenuItem; RotateRight1: TMenuItem; Rotate1801: TMenuItem; RotateLeft1: TMenuItem; CopySelectiontoClipboard1: TMenuItem; N19: TMenuItem; N21: TMenuItem; N23: TMenuItem; N24: TMenuItem; CroptoSelection1: TMenuItem; Acquire: TImageEnMViewAcquire; DoIOPreviews: TImageEnMViewDoIOPreviews; DoPrintPreviewDialog: TImageEnMViewDoPrintPreviewDialog; Save: TImageEnMViewSave; PromptToOpen: TImageEnMViewPromptToOpen; PromptToSave: TImageEnMViewPromptToSave; SeekFirst: TImageEnMViewSeekFirst; SeekLast: TImageEnMViewSeekLast; SeekNext: TImageEnMViewSeekNext; SeekPrior: TImageEnMViewSeekPrior; SelectAcquireSource: TImageEnMViewSelectAcquireSource; mnuFile: TMenuItem; Acquire2: TMenuItem; SaveProperties1: TMenuItem; PrintPreview2: TMenuItem; PrinttoPage1: TMenuItem; Print2: TMenuItem; Save1: TMenuItem; Open1: TMenuItem; Saveas1: TMenuItem; FirstFrame1: TMenuItem; LastFrame1: TMenuItem; NextFrame1: TMenuItem; PreviousFrame1: TMenuItem; SelectAcquisitionSource1: TMenuItem; N25: TMenuItem; N26: TMenuItem; N27: TMenuItem; N28: TMenuItem; DoAdjustPreviews: TImageEnMViewDoAdjustPreviews; DoEffectPreviews: TImageEnMViewDoEffectPreviews; DoEditPreviews: TImageEnMViewDoEditPreviews; ImageEffects1: TMenuItem; N2: TMenuItem; Exit1: TMenuItem; Playing: TImageEnMViewPlaying; PlayLoop: TImageEnMViewPlayLoop; Animateimage1: TMenuItem; LoopPlayback1: TMenuItem; N4: TMenuItem; RotateLeft: TImageEnMViewRotateLeft; RotateRight: TImageEnMViewRotateRight; DeleteImage: TImageEnMViewDeleteImage; DisplayModeSingle: TImageEnMViewDisplayModeSingle; SelectAll: TImageEnMViewSelectAll; CutToClipboard: TImageEnMViewCutToClipboard; PrintAllThumbnails: TImageEnMViewPrintAllThumbnails; PrintImageFitToPage: TImageEnMViewPrintImageFitToPage; PrintImageNormal: TImageEnMViewPrintImageNormal; PrintSelectedThumbnails: TImageEnMViewPrintSelectedThumbnails; PromptToAdd: TImageEnMViewPromptToAdd; PrintAllThumbnails1: TMenuItem; PrintThumbnails1: TMenuItem; N3: TMenuItem; Clear: TImageEnMViewClear; FillfromFolder1: TMenuItem; DoIOPreviewsSelected: TImageEnMViewDoIOPreviewsSelected; N5: TMenuItem; ImageSaveProperties1: TMenuItem; muiAutosaveChanges: TMenuItem; ImageList1: TImageList; EnableAdjustOrientation: TImageEnMViewEnableAdjustOrientation; AutoRotateDisplay1: TMenuItem; N6: TMenuItem; ExitApp: TFileExit; mnuLanguage: TMenuItem; PromptToRotate: TImageEnMViewPromptToRotate; EditImage1: TMenuItem; CustomRotate1: TMenuItem; StyleShowThumbs: TImageEnMViewStyleShowThumbs; StyleShowDetails: TImageEnMViewStyleShowDetails; DetailView1: TMenuItem; ThumbnailView1: TMenuItem; SortByFilename: TImageEnMViewSortByFilename; SortByFileType: TImageEnMViewSortByFileType; SortByFileSize: TImageEnMViewSortByFileSize; SortByCreateDate: TImageEnMViewSortByCreateDate; SortByEditDate: TImageEnMViewSortByEditDate; SortByImageSize: TImageEnMViewSortByImageSize; SortAscending: TImageEnMViewSortAscending; SortDescending: TImageEnMViewSortDescending; mnuSorting: TMenuItem; Filename1: TMenuItem; FileType1: TMenuItem; FileSize1: TMenuItem; CreateDate1: TMenuItem; EditDate1: TMenuItem; ImageSize1: TMenuItem; N1: TMenuItem; Ascending1: TMenuItem; Descending1: TMenuItem; StyleShowColumns: TImageEnMViewStyleShowColumns; ColumnView1: TMenuItem; StyleShowLargeThumbs: TImageEnMViewStyleShowLargeThumbs; StyleShowFileList: TImageEnMViewStyleShowFileList; N7: TMenuItem; LargethumbnailView1: TMenuItem; FileListView1: TMenuItem; ShowColumnFilename: TImageEnMViewShowColumn; ShowColumnFilePath: TImageEnMViewShowColumn; ShowColumnImageDimensions: TImageEnMViewShowColumn; ShowColumnFileSize: TImageEnMViewShowColumn; ShowColumnFileCreateDateTime: TImageEnMViewShowColumn; ShowColumnFileEditDateTime: TImageEnMViewShowColumn; ShowColumnFileType: TImageEnMViewShowColumn; mnuColumns: TMenuItem; CreateDate2: TMenuItem; Filename2: TMenuItem; EditDate2: TMenuItem; FileType2: TMenuItem; Dimensions1: TMenuItem; Size1: TMenuItem; Path1: TMenuItem; ShowColumnProperties: TImageEnMViewShowColumn; ImageProperties1: TMenuItem; ApplicationEvents1: TApplicationEvents; procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); procedure FormCreate(Sender: TObject); procedure AutoSaveError(Sender: TObject; Filename, ErrorMsg: string); procedure FillfromFolder1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure mnuImageClick(Sender: TObject); procedure ImageEnMView1ImageDeselect(Sender: TObject; idx: Integer); procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); procedure muiAutosaveChangesClick(Sender: TObject); private procedure SetAutoSaveChanges(const Value: Boolean); function GetAutoSaveChanges: Boolean; function GetSelectedImageIndex: Integer; procedure CreateLanguageMenuItems; procedure LanguageClick(Sender: TObject); public { Public declarations } property AutoSaveChanges : Boolean read GetAutoSaveChanges write SetAutoSaveChanges; property SelectedImageIndex : Integer read GetSelectedImageIndex; end; var MainForm: TMainForm; implementation {$R *.DFM} {$R WindowsTheme.res} uses FileCtrl, iexRegistryFunctions, iexWindowsFunctions; const // Enable to store the settings Save_Settings_To_Registry = False; Demo_Registry_Path ='\Software\ImageEn\MViewActionsDemo\'; procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin mnuColumns.Enabled := ImageEnMView1.Style = iemsColumns; end; procedure TMainForm.FormCreate(Sender: TObject); begin if Save_Settings_To_Registry then ImageEnMView1.LoadFromRegistry(Demo_Registry_Path); CreateLanguageMenuItems; // Recommended settings for TImageEnMView with ImageEnMView1 do begin LockUpdate; SetModernStyling( True, 140, 140 ); // Use better quality thumbnail drawing, Use rfFastLinear for best speed or rfLanczos3 for best quality ThumbnailDisplayFilter := rfFastLinear; SelectedImageAlwaysVisible := True; // When setting selected image, ensure that is it onscreen // Lock preview Proc.PreviewsParams := Proc.PreviewsParams + [prppDefaultLockPreview]; // Default to thumbnail view StyleShowThumbs.ExecuteTarget( nil ); UnlockUpdate; end; ImageEnMView1.FillFromDirectory( WindowsMyPicturesFolder, -1, False, '', False, '', True, True, iedtNone, iedtNone, iedtNone ); ImageEnMView1.SelectSeek(iskFirst); end; procedure TMainForm.AutoSaveError(Sender: TObject; Filename, ErrorMsg: string); begin MessageDlg(format('Error encountered saving changes to %s: %s', [Filename, ErrorMsg]), mtError, [mbOK], 0); end; procedure TMainForm.SetAutoSaveChanges(const Value: Boolean); begin FlipHorizontal .AutoSaveChanges := value; FlipVertical .AutoSaveChanges := value; RotateLeft .AutoSaveChanges := value; Rotate180 .AutoSaveChanges := value; RotateRight .AutoSaveChanges := value; DoAdjustPreviews .AutoSaveChanges := value; DoEffectPreviews .AutoSaveChanges := value; DoEditPreviews .AutoSaveChanges := value; PromptToRotate .AutoSaveChanges := value; end; procedure TMainForm.FillfromFolder1Click(Sender: TObject); var sPath: string; begin sPath := ''; if SelectDirectory(sPath, [], 0) then begin ImageEnMView1.Clear; ImageEnMView1.FillFromDirectory( sPath, -1, False, '', False, '', True, True, iedtNone, iedtNone, iedtNone ); ImageEnMView1.SelectSeek(iskFirst); end; end; procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin if Save_Settings_To_Registry then ImageEnMView1.SaveToRegistry(Demo_Registry_Path); end; function TMainForm.GetAutoSaveChanges: Boolean; begin result := DoEffectPreviews.AutoSaveChanges; end; function TMainForm.GetSelectedImageIndex: Integer; begin if ImageEnMView1.DisplayMode = mdSingle then Result := ImageEnMView1.VisibleFrame else Result := ImageEnMView1.SelectedImage; end; procedure TMainForm.mnuImageClick(Sender: TObject); begin muiAutosaveChanges.Enabled := DoEffectPreviews.CanAutoSaveChanges; muiAutosaveChanges.Checked := muiAutosaveChanges.Enabled and AutoSaveChanges; end; procedure TMainForm.ImageEnMView1ImageDeselect(Sender: TObject; idx: Integer); begin StatusBar.Panels[0].Text := ''; end; procedure TMainForm.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); begin if SelectedImageIndex < 0 then StatusBar.Panels[0].Text := '' else StatusBar.Panels[0].Text := format('%d of %d: %s', [SelectedImageIndex + 1, ImageEnMView1.ImageCount, ImageEnMView1.ImageFilename[SelectedImageIndex]]); end; procedure TMainForm.muiAutosaveChangesClick(Sender: TObject); var bEnable: Boolean; begin bEnable := not AutoSaveChanges; if bEnable and (MessageDlg('If you enable this option your ORIGINAL IMAGES WILL BE MODIFIED without confirmation. Are you sure you want to do this?', mtConfirmation, [mbYes,mbNo], 0) = mrNo) then exit; AutoSaveChanges := bEnable; end; procedure TMainForm.CreateLanguageMenuItems; var aLang : TMsgLanguage; NewItem: TMenuItem; begin mnuLanguage.Clear; for aLang := Low(TMsgLanguage) to High(TMsgLanguage) do begin NewItem := TMenuItem.Create(Self); NewItem.Caption := LanguageToStr(aLang); NewItem.Checked := IEGlobalSettings.MsgLanguage = aLang; NewItem.Tag := ord(aLang); NewItem.OnClick := LanguageClick; mnuLanguage.Add(NewItem) end; end; procedure TMainForm.LanguageClick(Sender: TObject); var aLang : TMsgLanguage; I: Integer; begin MessageDlg('You can view translated actions on the drop down menus.' + #13#10 + #13#10 + 'Note: Translation of some languages is not yet complete. Email sales@xequte.com to assist.', mtInformation, [mbOK], 0); for I := 0 to mnuLanguage.Count - 1 do mnuLanguage.Items[I].Checked := False; aLang := TMsgLanguage(TMenuItem(Sender).Tag); IEGlobalSettings.MsgLanguage := aLang; TMenuItem(Sender).Checked := True; end; end.