unit Main; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, ievect, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, ImageEnProc, ImageEnView, ImageEnIO, hyiedefs, ActnList, iexActions, ieview, iexActionsVect, ieopensavedlg, ImgList, StdActns, iesettings, hyieutils, iexBitmaps, iexLayers, iexRulers; type TMainForm = class(TForm) MainMenu1: TMainMenu; StatusBar: TStatusBar; ActionList1: TActionList; mnuView: TMenuItem; mnuEdit: TMenuItem; ZoomIn: TImageEnVectZoomIn; ZoomOut: TImageEnVectZoomOut; AutoShrink: TImageEnVectAutoShrink; AutoStretch: TImageEnVectAutoStretch; Fit: TImageEnVectFit; FitToHeight: TImageEnVectFitToHeight; FitToWidth: TImageEnVectFitToWidth; ZoomFullSize: TImageEnVectZoomFullSize; FitImage1: TMenuItem; FitImagetoHeight1: TMenuItem; FitImagetoWidth1: TMenuItem; N9: TMenuItem; ZoomIn2: TMenuItem; ZoomOut2: TMenuItem; ZoomtoFullSize1: TMenuItem; N12: TMenuItem; AutoShrink1: TMenuItem; AutoStretch1: TMenuItem; N14: TMenuItem; MouseMovingScroll: TImageEnVectMouseMovingScroll; MouseScroll: TImageEnVectMouseScroll; MouseSelect: TImageEnVectMouseSelect; MouseSelectCircle: TImageEnVectMouseSelectCircle; MouseSelectLasso: TImageEnVectMouseSelectLasso; MouseSelectMagicWand: TImageEnVectMouseSelectMagicWand; MouseSelectPolygon: TImageEnVectMouseSelectPolygon; MouseSelectZoom: TImageEnVectMouseSelectZoom; MouseZoom: TImageEnVectMouseZoom; mnuMouse: TMenuItem; ZoomtoSelection1: TMenuItem; Action11: TMenuItem; N19: TMenuItem; DoIOPreviews: TImageEnVectDoIOPreviews; DoPrintPreviewDialog: TImageEnVectDoPrintPreviewDialog; PrintImageFitToPage: TImageEnVectPrintImageFitToPage; PrintImageNormal: TImageEnVectPrintImageNormal; PromptToOpen: TImageEnVectPromptToOpen; PromptToSave: TImageEnVectPromptToSave; mnuFile: TMenuItem; SaveProperties1: TMenuItem; PrintPreview2: TMenuItem; PrinttoPage1: TMenuItem; Print2: TMenuItem; Open1: TMenuItem; Saveas1: TMenuItem; N26: TMenuItem; N27: TMenuItem; N2: TMenuItem; Exit1: TMenuItem; MergeAllToBackground: TImageEnVectMergeAllToBackground; MergeObjToBackground: TImageEnVectMergeObjToBackground; ObjBringForward: TImageEnVectObjBringForward; ObjBringToFront: TImageEnVectObjBringToFront; ObjCopyToClipboard: TImageEnVectObjCopyToClipboard; ObjCutToClipboard: TImageEnVectObjCutToClipboard; ObjPasteFromClipboard: TImageEnVectObjPasteFromClipboard; ObjSendToBack: TImageEnVectObjSendToBack; ObjUndo: TImageEnVectObjUndo; RemoveAllObjects: TImageEnVectRemoveAllObjects; RemoveObject: TImageEnVectRemoveObject; RotateObject180: TImageEnVectRotateObject180; SelAllObjects: TImageEnVectSelAllObjects; UnSelAllObjects: TImageEnVectUnSelAllObjects; mnuObject: TMenuItem; MergeAlltoBackground1: TMenuItem; MergetoBackground1: TMenuItem; BringForward1: TMenuItem; BringtoFront1: TMenuItem; Copy2: TMenuItem; Cut2: TMenuItem; Paste2: TMenuItem; SendtoBack1: TMenuItem; Undo1: TMenuItem; DeleteAll1: TMenuItem; Delete1: TMenuItem; Rotate1802: TMenuItem; RotateRight2: TMenuItem; RotateLeft2: TMenuItem; SelectAll1: TMenuItem; DeselectAll1: TMenuItem; Paste1: TMenuItem; N3: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; VtDragLen: TImageEnVectMouseVtDragLen; VtEditPolyline: TImageEnVectMouseVtEditPolyline; VtLineLen: TImageEnVectMouseVtLineLen; VtObjectSelect: TImageEnVectMouseVtObjectSelect; VtPutAngle: TImageEnVectMouseVtPutAngle; VtPutBitmap: TImageEnVectMouseVtPutBitmap; VtPutBox: TImageEnVectMouseVtPutBox; VtPutEllipse: TImageEnVectMouseVtPutEllipse; VtPutLine: TImageEnVectMouseVtPutLine; VtPutLineLabel: TImageEnVectMouseVtPutLineLabel; VtPutMemo: TImageEnVectMouseVtPutMemo; VtPutPolyLine: TImageEnVectMouseVtPutPolyLine; VtPutRuler: TImageEnVectMouseVtPutRuler; VtPutText: TImageEnVectMouseVtPutText; VtUnStampMode: TImageEnVectMouseVtUnStampMode; MeasureDistance1: TMenuItem; MeasureDistance2: TMenuItem; MeasureLength1: TMenuItem; Select1: TMenuItem; MeasureAngle1: TMenuItem; InsertImage1: TMenuItem; InsertRectangle1: TMenuItem; InsertEllipse1: TMenuItem; InsertLine1: TMenuItem; InsertLabelwithLine1: TMenuItem; InsertMemo1: TMenuItem; InsertPolyline1: TMenuItem; InsertRuler1: TMenuItem; InsertText1: TMenuItem; N10: TMenuItem; N11: TMenuItem; N28: TMenuItem; N29: TMenuItem; ImageEnVect1: TImageEnVect; RotateObjectLeft: TImageEnVectRotateObjectLeft; RotateObjectRight: TImageEnVectRotateObjectRight; Clear: TImageEnVectClear; CopyToClipboard: TImageEnVectCopyToClipboard; CopyImage1: TMenuItem; N1: TMenuItem; ImageList1: TImageList; CropImageToObjects: TImageEnVectCropImageToObjects; CropImagetoObjects1: TMenuItem; N4: TMenuItem; ExitApp: TFileExit; ObjSendBackward: TImageEnVectObjSendBackward; mnuLanguage: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ImageEnVect1FinishWork(Sender: TObject); procedure ImageEnVect1NewObject(Sender: TObject; hobj: Integer); procedure ImageEnVect1Progress(Sender: TObject; per: Integer); procedure ImageEnVect1SelectObject(Sender: TObject); private { Private declarations } procedure CreateLanguageMenuItems; overload; procedure LanguageClick(Sender: TObject); public { Public declarations } end; var MainForm: TMainForm; implementation uses registry, iexRegistryFunctions; const // Enable to store the settings Save_Settings_To_Registry = False; Demo_Registry_Path ='\Software\ImageEn\IEVectActionsDemo\'; {$R *.DFM} {$R WindowsTheme.res} const IE_Registry_IEVectMouseInteractVt_Prefix = 'IEVectMouseInteractVt'; function LoadImageEnVectSettings(AnImageEnVect : TImageEnVect; const sKey : string; aHKEY: HKEY = HKEY_CURRENT_USER): boolean; var WRegistry : TRegistry; enum : TIEMouseInteractVtItems; sData: string; begin Result := True; try if AnImageEnVect.LoadFromRegistry(Demo_Registry_Path) = False then raise Exception.create('Load Error'); WRegistry := TRegistry.Create; try WRegistry.Access := KEY_READ; WRegistry.Rootkey := aHKEY; if WRegistry.Openkey(sKey, FALSE) = False then raise Exception.create('Openkey Fail'); // MouseInteract for enum in [Low(TIEMouseInteractVtItems) .. High(TIEMouseInteractVtItems)] do begin sData := WRegistry.ReadString(IE_Registry_IEVectMouseInteractVt_Prefix + IntToStr(Integer(enum))); if sData <> '' then begin if IEStr2BoolS(sData) then AnImageEnVect.MouseInteractVt := AnImageEnVect.MouseInteractVt + [enum] else AnImageEnVect.MouseInteractVt := AnImageEnVect.MouseInteractVt - [enum]; end; end; WRegistry.CloseKey; finally WRegistry.free; end; except Result := False; end; end; function SaveImageEnVectSettings(AnImageEnVect : TImageEnVect; const sKey : string; aHKEY: HKEY = HKEY_CURRENT_USER): boolean; var WRegistry : TRegistry; enum : TIEMouseInteractVtItems; begin Result := True; try if AnImageEnVect.SaveToRegistry(Demo_Registry_Path) = False then raise Exception.create('Save Error'); WRegistry := TRegistry.Create; try WRegistry.Access := KEY_ALL_ACCESS; WRegistry.Rootkey := aHKEY; if WRegistry.Openkey(sKey, True) = False then raise Exception.create('Open Error'); // MouseInteract for enum in [Low(TIEMouseInteractVtItems) .. High(TIEMouseInteractVtItems)] do WRegistry.WriteString(IE_Registry_IEVectMouseInteractVt_Prefix + IntToStr(Integer(enum)), IEBool2StrS(enum in AnImageEnVect.MouseInteractVt)); WRegistry.CloseKey; finally WRegistry.free; end; except Result := False; end; end; procedure TMainForm.FormCreate(Sender: TObject); begin // Common settings for TImageEnVect with ImageEnVect1 do begin BorderStyle := bsNone; // Normally don't require a 3D border ZoomFilter := rfFastLinear; // Use better quality drawing when the image is not 100%, Use rfFastLinear for best speed or rfLanczos3 for best quality MouseInteractVt := [miObjectSelect]; // What does the mouse do? ObjAutoUndo := True; // Allow undo of object editing changes end; if Save_Settings_To_Registry then LoadImageEnVectSettings(ImageEnVect1, Demo_Registry_Path); CreateLanguageMenuItems; end; procedure TMainForm.FormActivate(Sender: TObject); begin ImageEnVect1.SelColor1 := clWhite; ImageEnVect1.SelColor2 := clRed; ImageEnVect1.MeasureTrack := true; ImageEnVect1.ObjAutoUndo := true; ImageEnVect1.Proc.ImageResize(800, 600, iehLeft, ievTop); ImageEnVect1.Proc.Fill(clWhite); end; procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin if Save_Settings_To_Registry then SaveImageEnVectSettings(ImageEnVect1, Demo_Registry_Path); end; procedure TMainForm.ImageEnVect1FinishWork(Sender: TObject); begin StatusBar.Panels[0].Text := ''; end; procedure TMainForm.ImageEnVect1Progress(Sender: TObject; per: Integer); begin StatusBar.Panels[0].Text := ' ' + IntToStr(per) + '%'; end; procedure TMainForm.ImageEnVect1SelectObject(Sender: TObject); begin StatusBar.Panels[0].Text := format('%d Objects Selected', [ImageEnVect1.SelObjectsCount]); 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.ImageEnVect1NewObject(Sender: TObject; hobj: Integer); begin if ImageEnVect1.ObjKind[hobj] = iekLINELABEL then ImageEnVect1.ObjText[hobj] := ' ImageEn Rocks! '; 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.