BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Annotations/UserDataVect/umain.pas

140 lines
3.4 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ieview, imageenview, ievect, ExtCtrls, imageenio, Buttons, iexBitmaps;
type
TMyData=record
text1:string[255];
text2:string[255];
end;
PMyData=^TMyData;
type
TMainForm = class(TForm)
ImageEnVect1: TImageEnVect;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Panel2: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
SpeedButton1: TSpeedButton;
ComboBox1: TComboBox;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
procedure ImageEnVect1ObjectOver(Sender: TObject; hobj: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
procedure TMainForm.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex:=0;
ImageEnVect1.MouseInteractVt:=[miObjectSelect];
ImageEnVect1.MaxSelectionDistance:=10;
SpeedButton1.Down := True;
SpeedButton1Click(nil);
end;
// Open
procedure TMainForm.Button1Click(Sender: TObject);
var
filename:string;
begin
if OpenDialog1.Execute then
begin
filename:=OpenDialog1.FileName;
if IsKnownFormat(filename) then
ImageEnVect1.IO.LoadFromFile(filename)
else
ImageEnVect1.LoadFromFileAll(filename);
end;
end;
// Save
procedure TMainForm.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
ImageEnVect1.SaveToFileAll(SaveDialog1.FileName,-1);
end;
// Add new object
procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down then
begin
case ComboBox1.ItemIndex of
0: ImageEnVect1.MouseInteractVt:=[miPutLine];
1: ImageEnVect1.MouseInteractVt:=[miPutBox];
2: ImageEnVect1.MouseInteractVt:=[miPutEllipse];
3: ImageEnVect1.MouseInteractVt:=[miPutBitmap];
4: ImageEnVect1.MouseInteractVt:=[miPutText];
5: ImageEnVect1.MouseInteractVt:=[miPutRuler];
6: ImageEnVect1.MouseInteractVt:=[miPutPolyline];
7: ImageEnVect1.MouseInteractVt:=[miPutAngle];
8: ImageEnVect1.MouseInteractVt:=[miPutMemo];
end;
end
else
ImageEnVect1.MouseInteractVt:=[miObjectSelect];
ImageEnVect1.PolylineEndingMode:=ieemMouseUp;
GroupBox1 .Enabled := SpeedButton1.Down;
Label3 .Enabled := SpeedButton1.Down;
Label1 .Enabled := SpeedButton1.Down;
Edit1 .Enabled := SpeedButton1.Down;
Label2 .Enabled := SpeedButton1.Down;
Edit2 .Enabled := SpeedButton1.Down;
end;
// New object created. Create new info
procedure TMainForm.ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
var
mydata:PMyData;
begin
getmem(mydata, sizeof(TMyData));
mydata^.text1:=Edit1.Text;
mydata^.text2:=Edit2.Text;
ImageEnVect1.ObjUserData[hobj]:=mydata;
ImageEnVect1.ObjUserDataLength[hobj]:=sizeof(TMyData);
end;
procedure TMainForm.ImageEnVect1ObjectOver(Sender: TObject; hobj: Integer);
var
mydata:PMyData;
begin
mydata:=ImageEnVect1.ObjUserData[ hobj ];
if mydata<>nil then
begin
Edit1.Text:=mydata.text1;
Edit2.Text:=mydata.text2;
end;
end;
end.