BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Multi/Multiview2/umain.pas

149 lines
4.4 KiB
Plaintext

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.