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.