unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, imageenview, ievect, ieview, iemview, imageenio, StdCtrls, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TMainForm = class(TForm) MainMenu1: TMainMenu; ImageEnMView1: TImageEnMView; ImageEnView1: TImageEnView; File1: TMenuItem; Open1: TMenuItem; N1: TMenuItem; Print1: TMenuItem; N2: TMenuItem; Exit1: TMenuItem; View1: TMenuItem; ShowAnnotations1: TMenuItem; PrintCurrent1: TMenuItem; procedure Exit1Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Print1Click(Sender: TObject); procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); procedure ImageEnView1LayerNotify(Sender: TObject; layer: Integer; event: TIELayerEvent); procedure PrintCurrent1Click(Sender: TObject); procedure ShowAnnotations1Click(Sender: TObject); private { Private declarations } fHasImagingAnnot: Boolean; // True if has ImagingAnnot. False, if ImageEnAnnot (of course, it can actually have both, but for our purposes this will suffice) public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.DFM} {$R WindowsTheme.res} procedure TMainForm.FormActivate(Sender: TObject); begin ImageEnMView1.LockUpdate(); ImageEnMView1.AnnotationsVisible := True; ImageEnMView1.SetModernStyling(); ImageEnMView1.FillFromDirectory( ExtractFilePath( Application.ExeName ), -1, False, '', False, 'jpg,jpeg,tiff,tif' ); ImageEnMView1.SelectedImage := 0; ImageEnMView1.UnlockUpdate(); ImageEnView1.MouseInteract := [ miMoveLayers, miResizeLayers ]; end; // File | Exit procedure TMainForm.Exit1Click(Sender: TObject); begin Close; end; // File | Open procedure TMainForm.Open1Click(Sender: TObject); var filename:string; begin filename:=ImageEnMView1.MIO.ExecuteOpenDialog('','',false,0,''); if filename <> '' then begin Caption := filename; ImageEnMView1.MIO.LoadFromFile( Caption ); ImageEnMView1.SelectedImage := 0; ImageEnMView1ImageSelect(self, 0); end; end; // File | Print All procedure TMainForm.Print1Click(Sender: TObject); begin ImageEnMView1.MIO.DoPrintPreviewDialog( Caption, ShowAnnotations1.checked ); end; // Image selected procedure TMainForm.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); begin ImageEnView1.ClearAll(); // Copy image ImageEnMView1.CopyToIEBitmap( idx, ImageEnView1.IEBitmap ); // Copy annotations if ShowAnnotations1.checked then begin fHasImagingAnnot := ImageEnMView1.MIO.Params[idx].ImagingAnnot.ObjectsCount > 0; // Wang annotations ImageEnMView1.MIO.Params[idx].ImagingAnnot.CopyToTImageEnView( ImageEnView1 ); // ImageEn Proprietary annotations (e.g. TImageEnView layers) ImageEnMView1.MIO.Params[idx].ImageEnAnnot.CopyToTImageEnView( ImageEnView1 ); ImageEnView1.LayersCurrent := 0; end; ImageEnView1.Update; end; procedure TMainForm.ImageEnView1LayerNotify(Sender: TObject; layer: Integer; event: TIELayerEvent); var idx: Integer; begin idx := ImageEnMView1.SelectedImage; if ( idx >= 0 ) and ( event in [ ielMoved, ielResized ]) then begin // Copy objects back to ImageEnMView ImageEnMView1.MIO.Params[idx].ImagingAnnot.Clear; ImageEnMView1.MIO.Params[idx].ImageEnAnnot.Clear; if fHasImagingAnnot then ImageEnMView1.MIO.Params[idx].ImagingAnnot.CopyFromTImageEnView( ImageEnView1 ) else ImageEnMView1.MIO.Params[idx].ImageEnAnnot.CopyFromTImageEnView( ImageEnView1 ); ImageEnMView1.UpdateImage( idx ); end; end; // File | Print Current procedure TMainForm.PrintCurrent1Click(Sender: TObject); begin // It is better to print all layers, but we'll just use the annotations here if fHasImagingAnnot then ImageEnView1.IO.Params.ImagingAnnot.CopyFromTImageEnView() else ImageEnView1.IO.Params.ImageEnAnnot.CopyFromTImageEnView(); ImageEnView1.IO.DoPrintPreviewDialog( iedtDialog, Caption, ShowAnnotations1.checked ); end; procedure TMainForm.ShowAnnotations1Click(Sender: TObject); begin ShowAnnotations1.checked := not ShowAnnotations1.checked; ImageEnMView1.AnnotationsVisible := ShowAnnotations1.checked; if ImageEnMView1.SelectedImage >= 0 then ImageEnMView1ImageSelect( nil, ImageEnMView1.SelectedImage ); end; end.