145 lines
3.1 KiB
Plaintext
145 lines
3.1 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ieview, imageenview, Menus, ievect, Buttons, ExtCtrls, StdCtrls, hyieutils,
|
|
iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers;
|
|
|
|
type
|
|
Tfmain = class(TForm)
|
|
ImageEnVect1: TImageEnVect;
|
|
Panel1: TPanel;
|
|
Panel2: TPanel;
|
|
SpeedButton1: TSpeedButton;
|
|
Label1: TLabel;
|
|
Edit1: TEdit;
|
|
Label2: TLabel;
|
|
Memo1: TMemo;
|
|
Button1: TButton;
|
|
Button2: TButton;
|
|
procedure SpeedButton1Click(Sender: TObject);
|
|
procedure ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure ImageEnVect1SelectObject(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
records: TStringList;
|
|
procedure ShowObj(hobj: integer);
|
|
end;
|
|
|
|
var
|
|
fmain: Tfmain;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
type
|
|
TMyRecord = class
|
|
caption: string;
|
|
description: string;
|
|
// you could add new fields here
|
|
end;
|
|
|
|
procedure Tfmain.FormCreate(Sender: TObject);
|
|
begin
|
|
records := TStringList.Create;
|
|
end;
|
|
|
|
procedure Tfmain.FormDestroy(Sender: TObject);
|
|
begin
|
|
while records.Count > 0 do
|
|
begin
|
|
records.Objects[0].free;
|
|
records.Delete(0);
|
|
end;
|
|
end;
|
|
|
|
|
|
// New Point
|
|
|
|
procedure Tfmain.SpeedButton1Click(Sender: TObject);
|
|
begin
|
|
ImageEnVect1.ObjText[-1] := 'New Point';
|
|
ImageEnVect1.ObjBeginShape[-1] := iesOUTARROW;
|
|
ImageEnVect1.ObjBrushStyle[-1] := bsSolid;
|
|
ImageEnVect1.ObjPenColor[-1] := clRed;
|
|
ImageEnVect1.MouseInteractVt := [miPutLineLabel];
|
|
end;
|
|
|
|
// created a new point
|
|
|
|
procedure Tfmain.ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
|
|
var
|
|
newobj: TMyRecord;
|
|
begin
|
|
newobj := TMyRecord.Create;
|
|
newobj.caption := 'New Point';
|
|
newobj.description := '';
|
|
|
|
records.AddObject(inttostr(hobj), newobj);
|
|
|
|
ShowObj(hobj);
|
|
|
|
ImageEnVect1.MouseInteractVt := [miObjectSelect];
|
|
SpeedButton1.Down := false;
|
|
end;
|
|
|
|
procedure Tfmain.ShowObj(hobj: integer);
|
|
var
|
|
idx: integer;
|
|
myrec: TMyRecord;
|
|
begin
|
|
idx := records.IndexOf(IntToStr(hobj));
|
|
if idx >= 0 then
|
|
begin
|
|
myrec := records.Objects[idx] as TMyRecord;
|
|
Edit1.Text := myrec.caption;
|
|
Memo1.Text := myrec.description;
|
|
end;
|
|
end;
|
|
|
|
// Save object changes
|
|
|
|
procedure Tfmain.Button1Click(Sender: TObject);
|
|
var
|
|
idx: integer;
|
|
myrec: TMyRecord;
|
|
hobj: integer;
|
|
begin
|
|
hobj := ImageEnVect1.SelObjects[0]; // first selected object
|
|
idx := records.IndexOf(IntToStr(hobj));
|
|
if idx >= 0 then
|
|
begin
|
|
myrec := records.Objects[idx] as TMyRecord;
|
|
myrec.caption := Edit1.Text;
|
|
myrec.description := Memo1.Text;
|
|
ImageEnVect1.ObjText[hobj] := myrec.caption;
|
|
end;
|
|
end;
|
|
|
|
// object selected
|
|
|
|
procedure Tfmain.ImageEnVect1SelectObject(Sender: TObject);
|
|
begin
|
|
ShowObj(ImageEnVect1.SelObjects[0]);
|
|
end;
|
|
|
|
// Open
|
|
procedure Tfmain.Button2Click(Sender: TObject);
|
|
begin
|
|
with ImageEnVect1.IO do
|
|
LoadFromFile(ExecuteOpenDialog('', '', false, 0, ''));
|
|
ImageEnVect1.MouseInteractVt := [miObjectSelect];
|
|
end;
|
|
|
|
end.
|