BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Annotations/Vectorial/Main.pas

706 lines
21 KiB
Plaintext

unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ToolWin, ComCtrls,
ImageEnView, IEVect, ExtCtrls, ImageEnProc, ImageEnIO, Buttons, StdCtrls, ieview, IEOpenSaveDlg,
hyiedefs, hyieutils, iexBitmaps, iesettings, iexLayers, iexRulers;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
ImageEnVect1: TImageEnVect;
N1: TMenuItem;
New: TMenuItem;
Panel2: TPanel;
StatusBar1: TStatusBar;
GroupBox1: TGroupBox;
SpeedButton1: TSpeedButton;
SpeedButton4: TSpeedButton;
GroupBox2: TGroupBox;
SpeedButton7: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton8: TSpeedButton;
GroupBox3: TGroupBox;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
GroupBox4: TGroupBox;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton13: TSpeedButton;
ColorDialog1: TColorDialog;
Open1: TMenuItem;
SaveDialog1: TSaveDialog;
Saveas1: TMenuItem;
Import1: TMenuItem;
DXF1: TMenuItem;
Label13: TLabel;
Tools1: TMenuItem;
Openbackgroundimage1: TMenuItem;
Adjustcolor1: TMenuItem;
Effects1: TMenuItem;
Grayforce1: TMenuItem;
Edit5: TMenuItem;
Undo1: TMenuItem;
N2: TMenuItem;
Copy1: TMenuItem;
Cut1: TMenuItem;
Paste1: TMenuItem;
Pasteinrect1: TMenuItem;
Deleteobject1: TMenuItem;
SpeedButton14: TSpeedButton;
FontDialog1: TFontDialog;
OpenDialog1: TOpenDialog;
ScrollBox1: TScrollBox;
GroupBox5: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label9: TLabel;
Label7: TLabel;
Panel3: TShape;
Panel4: TShape;
cmbPen: TComboBox;
Edit2: TEdit;
UpDown2: TUpDown;
cmbBrush: TComboBox;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label10: TLabel;
Label11: TLabel;
cmbLineStart: TComboBox;
cmbLineEnd: TComboBox;
TabSheet2: TTabSheet;
Button1: TButton;
Button2: TButton;
Panel5: TPanel;
ImageEnView1: TImageEnView;
TabSheet3: TTabSheet;
Label17: TLabel;
Label18: TLabel;
Button3: TButton;
Edit6: TEdit;
UpDown4: TUpDown;
cmbTextAlign: TComboBox;
Button4: TButton;
GroupBox6: TGroupBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Label12: TLabel;
ComboBox2: TComboBox;
Edit1: TEdit;
Edit3: TEdit;
UpDown1: TUpDown;
Edit4: TEdit;
UpDown3: TUpDown;
GroupBox7: TGroupBox;
Label15: TLabel;
Label16: TLabel;
ComboBox1: TComboBox;
Label14: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
Copyobjectstobackground1: TMenuItem;
Objectscount1: TMenuItem;
Editobjects1: TMenuItem;
N3: TMenuItem;
Fitbitmaptoobjects1: TMenuItem;
N4: TMenuItem;
Selectall1: TMenuItem;
SpeedButton17: TSpeedButton;
dlgOpenImage: TOpenImageEnDialog;
Copy2: TMenuItem;
Cut2: TMenuItem;
Paste2: TMenuItem;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
CheckBox5: TCheckBox;
Label19: TLabel;
Edit7: TEdit;
UpDown5: TUpDown;
SpeedButton20: TSpeedButton;
N5: TMenuItem;
Undo2: TMenuItem;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
SpeedButton21: TSpeedButton;
spdForceAltKey: TSpeedButton;
procedure Exit1Click(Sender: TObject);
procedure NewClick(Sender: TObject);
procedure CommandButtonClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure StyleControlChange(Sender: TObject);
procedure ImageEnVect1SelectObject(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Saveas1Click(Sender: TObject);
procedure DXF1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ImageEnVect1ViewChange(Sender: TObject; Change: Integer);
procedure Openbackgroundimage1Click(Sender: TObject);
procedure Adjustcolor1Click(Sender: TObject);
procedure Effects1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Grayforce1Click(Sender: TObject);
procedure Undo1Click(Sender: TObject);
procedure Copy1Click(Sender: TObject);
procedure Cut1Click(Sender: TObject);
procedure Paste1Click(Sender: TObject);
procedure Pasteinrect1Click(Sender: TObject);
procedure Deleteobject1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ImageEnVect1MeasureHint(Sender: TObject; var Text: string; Value: Double);
procedure SpeedButton16Click(Sender: TObject);
procedure Copyobjectstobackground1Click(Sender: TObject);
procedure Objectscount1Click(Sender: TObject);
procedure Fitbitmaptoobjects1Click(Sender: TObject);
procedure Selectall1Click(Sender: TObject);
procedure Copy2Click(Sender: TObject);
procedure Cut2Click(Sender: TObject);
procedure Paste2Click(Sender: TObject);
procedure Undo2Click(Sender: TObject);
procedure CheckBox7Click(Sender: TObject);
procedure ImageEnVect1TextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Panel3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure Panel4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure spdForceAltKeyClick(Sender: TObject);
private
{ Private declarations }
ctrlch: boolean;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses
giflzw, tiflzw, UGrayForce;
{$R *.DFM}
{$R WindowsTheme.res}
// File > Exit
procedure TMainForm.Exit1Click(Sender: TObject);
begin
Close;
end;
// File > New
procedure TMainForm.NewClick(Sender: TObject);
begin
ImageEnVect1.Proc.Clear;
ImageEnVect1.RemoveAllObjects;
ImageEnVect1.Proc.ImageResize(ImageEnVect1.ClientWidth, ImageEnVect1.ClientHeight, iehLeft, ievTop);
ImageEnVect1.Proc.Fill(clWhite);
end;
// Speedbuttons click (Zoom,Selection,Measures,Objects)
procedure TMainForm.CommandButtonClick(Sender: TObject);
var
bMeasureSelected: Boolean;
bSelectorSelected: Boolean;
begin
with ImageEnVect1 do
begin
// If using a measure, ensure that they have a suitable selector
bMeasureSelected := SpeedButton2.down or SpeedButton3.down;
bSelectorSelected := SpeedButton7.down or SpeedButton11.down or SpeedButton12.down;
if bMeasureSelected and (bSelectorSelected = False) then
MouseInteract := MouseInteract + [miSelect];
// SET MouseInteract and MouseInteractVt
// Zoom
if (Sender = SpeedButton1) and SpeedButton1.Down then
MouseInteract := MouseInteract + [miZoom];
if (Sender = SpeedButton4) and SpeedButton4.Down then
MouseInteract := MouseInteract + [miSelectZoom];
if (Sender = SpeedButton8) and SpeedButton8.Down then
MouseInteract := MouseInteract + [miScroll];
// Selection
if (Sender = SpeedButton13) and SpeedButton13.Down then
MouseInteractVt := MouseInteractVt + [miObjectSelect];
if (Sender = SpeedButton7) and SpeedButton7.Down then
MouseInteract := MouseInteract + [miSelect];
if (Sender = SpeedButton11) and SpeedButton11.Down then
MouseInteract := MouseInteract + [miSelectPolygon];
if (Sender = SpeedButton12) and SpeedButton12.Down then
MouseInteract := MouseInteract + [miSelectCircle];
// Measures
if (Sender = SpeedButton2) and SpeedButton2.Down then
MouseInteractVt := MouseInteractVt + [miArea];
if (Sender = SpeedButton3) and SpeedButton3.Down then
MouseInteractVt := MouseInteractVt + [miLineLen];
if (Sender = SpeedButton15) and SpeedButton15.Down then
MouseInteractVt := MouseInteractVt + [miDragLen];
// Insert objects
if (Sender = SpeedButton5) and SpeedButton5.Down then
MouseInteractVt := MouseInteractVt + [miPutLine];
if (Sender = SpeedButton6) and SpeedButton6.Down then
MouseInteractVt := MouseInteractVt + [miPutBox];
if (Sender = SpeedButton9) and SpeedButton9.Down then
MouseInteractVt := MouseInteractVt + [miPutEllipse];
if (Sender = SpeedButton10) and SpeedButton10.Down then
MouseInteractVt := MouseInteractVt + [miPutBitmap];
if (Sender = SpeedButton14) and (SpeedButton14.Down) then
MouseInteractVt := MouseInteractVt + [miPutText];
if (Sender = SpeedButton17) and (SpeedButton17.Down) then
MouseInteractVt := MouseInteractVt + [miPutRuler];
if (Sender = SpeedButton18) and (SpeedButton18.Down) then
MouseInteractVt := MouseInteractVt + [miPutPolyline];
if (Sender = SpeedButton19) and (SpeedButton19.Down) then
MouseInteractVt := MouseInteractVt + [miPutAngle];
if (Sender = SpeedButton20) and (SpeedButton20.Down) then
MouseInteractVt := MouseInteractVt + [miPutMemo];
if (Sender = SpeedButton21) and (SpeedButton21.Down) then
MouseInteractVt := MouseInteractVt + [miEditPolyline];
// SET Buttons (feedback)
SpeedButton1.Down := miZoom in MouseInteract;
SpeedButton4.Down := miSelectZoom in MouseInteract;
SpeedButton8.Down := miScroll in MouseInteract;
SpeedButton13.Down := miObjectSelect in MouseInteractVt;
SpeedButton7.Down := miSelect in MouseInteract;
SpeedButton11.Down := miSelectPolygon in MouseInteract;
SpeedButton12.Down := miSelectCircle in MouseInteract;
SpeedButton2.Down := miArea in MouseInteractVt;
SpeedButton3.Down := miLineLen in MouseInteractVt;
SpeedButton5.Down := miPutLine in MouseInteractVt;
SpeedButton6.Down := miPutBox in MouseInteractVt;
SpeedButton9.Down := miPutEllipse in MouseInteractVt;
SpeedButton10.Down := miPutBitmap in MouseInteractVt;
SpeedButton14.Down := miPutText in MouseInteractVt;
SpeedButton15.Down := miDragLen in MouseInteractVt;
SpeedButton17.Down := miPutRuler in MouseInteractVt;
SpeedButton18.Down := miPutPolyline in MouseInteractVt;
SpeedButton19.Down := miPutAngle in MouseInteractVt;
SpeedButton20.Down := miPutMemo in MouseInteractVt;
SpeedButton21.Down := miEditPolyline in MouseInteractVt;
// Cancel selection
if not (miSelect in MouseInteract) and not (miSelectPolygon in Mouseinteract)
and not (miSelectCircle in MouseInteract) then
Deselect;
end;
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
ctrlch := false;
cmbBrush.ItemIndex := ord(bsClear);
cmbPen.ItemIndex := ord(psSolid);
cmbLineStart.ItemIndex := ord(iesNone);
cmbLineEnd.ItemIndex := ord(iesNone);
cmbTextAlign.ItemIndex := ord(iejLeft);
StyleControlChange(self);
ComboBox2.ItemIndex := 4;
ComboBox2Change(self);
checkbox1.checked := true;
checkbox2.checked := true;
checkbox3.checked := true;
checkbox4.checked := true;
ImageEnVect1.SelColor1 := clWhite;
ImageEnVect1.SelColor2 := clRed;
ImageEnVect1.MeasureTrack := true;
ImageEnVect1.UseCentralGrip := false;
ImageEnVect1.ObjAutoUndo := true;
ImageEnVect1.Proc.ImageResize(ImageEnVect1.ClientWidth, ImageEnVect1.ClientHeight, iehLeft, ievTop);
ImageEnVect1.Proc.Fill(clWhite);
ImageEnView1.IEBitmap.Assign(ImageEnVect1.ObjBitmap[IEV_NEXT_INSERTED_OBJECT]);
ImageEnView1.Update;
ImageEnView1.Fit;
end;
// Object properties (controls change)
procedure TMainForm.StyleControlChange(Sender: TObject);
var
q, obj: integer;
xstyle: TIEVStyle;
begin
if ctrlch then
exit;
obj := IEV_NEXT_INSERTED_OBJECT; // (= -1 which refers to the next object that is inserted)
with ImageEnvect1 do
for q := -1 to SelObjectsCount - 1 do
begin
if q >= 0 then
obj := SelObjects[q];
ObjMemoCharsBrushStyle[obj] := bsClear;
SetObjFont(obj, FontDialog1.Font);
ObjPenColor[obj] := panel3.Brush.color;
ObjBrushColor[obj] := panel4.Brush.color;
ObjBrushStyle[obj] := TBrushStyle(cmbBrush.itemindex);
ObjPenStyle[obj] := TPenStyle(cmbPen.itemindex);
ObjPenWidth[obj] := strtointdef(edit2.text, 1);
ObjBeginShape[obj] := TIEVArrowShape(cmbLineStart.itemindex);
ObjEndShape[obj] := TIEVArrowShape(cmbLineEnd.itemindex);
ObjFontAngle[obj] := updown4.position;
ObjTextAlign[obj] := TIEAlignment(cmbTextAlign.itemindex);
xstyle := [];
if checkbox1.checked then
xstyle := xstyle + [ievsVisible];
if checkbox4.checked then
xstyle := xstyle + [ievsSelectable];
if checkbox2.checked then
xstyle := xstyle + [ievsMoveable];
if checkbox3.checked then
xstyle := xstyle + [ievsSizeable];
ObjStyle[obj] := xstyle;
ObjTextAutoSize[obj] := true;
// shadow
ObjSoftShadow[obj].Enabled := checkbox5.checked;
// transparency
ObjTransparency[obj] := strtointdef(Edit7.Text, 255);
// memo multifont
ObjFontLocked[obj] := not checkbox6.checked;
end;
end;
// Object (or multi-object) selection
procedure TMainForm.ImageEnVect1SelectObject(Sender: TObject);
var
q, obj: integer;
begin
// load properties to "Object properties"
ctrlch := true;
obj := IEV_NEXT_INSERTED_OBJECT; // (= -1 which refers to the next object that is inserted)
with ImageEnVect1 do
for q := -1 to SelObjectsCount - 1 do
begin
if q >= 0 then
obj := SelObjects[q];
panel3.Brush.color := ObjPenColor[obj];
panel4.Brush.color := ObjBrushColor[obj];
edit2.text := inttostr(ObjPenWidth[obj]);
cmbBrush.itemindex := ord(ObjBrushStyle[obj]);
cmbPen.itemindex := ord(ObjPenStyle[obj]);
cmbLineStart.itemindex := ord(ObjBeginShape[obj]);
cmbLineEnd.itemindex := ord(ObjEndShape[obj]);
with FontDialog1 do
begin
Font.Name := ObjFontName[obj];
Font.Height := ObjFontHeight[obj];
Font.Style := ObjFontStyles[obj];
end;
updown4.position := trunc(ObjFontAngle[obj]);
cmbTextAlign.itemindex := ord(ObjTextAlign[obj]);
checkbox1.checked := ievsVisible in ObjStyle[obj];
checkbox4.checked := ievsSelectable in ObjStyle[obj];
checkbox2.checked := ievsMoveable in ObjStyle[obj];
checkbox3.checked := ievsSizeable in ObjStyle[obj];
checkbox5.checked := ObjSoftShadow[obj].Enabled;
Edit7.text := inttostr(ObjTransparency[obj]);
checkbox6.checked := not ObjFontLocked[obj];
end;
ctrlch := false;
end;
// Measures unit / Scale / Digits / Precision
procedure TMainForm.ComboBox2Change(Sender: TObject);
begin
with ImageEnVect1 do
begin
MUnit := TIEUnits(ComboBox2.ItemIndex);
try
ScaleFactor := StrToFloat(Edit1.text);
except
end;
FloatDigits := StrToIntDef(Edit3.text, 2);
FloatPrecision := StrToIntDef(Edit4.text, 15);
end;
end;
// File > Open
procedure TMainForm.Open1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'ImageEn Objects|*.IEV';
OpenDialog1.DefaultExt := 'IEV';
if OpenDialog1.Execute then
ImageEnVect1.LoadFromFileIEV(OpenDialog1.FileName);
end;
// File > Save As
procedure TMainForm.Saveas1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
ImageEnVect1.SaveToFileIEV(SaveDialog1.FileName);
end;
// File > Import > DXF
procedure TMainForm.DXF1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'AutoCAD DXF|*.DXF';
OpenDialog1.DefaultExt := 'DXF';
if OpenDialog1.Execute then
ImageEnVect1.ImportDXF(OpenDialog1.FileName);
end;
// Properties > zoom
procedure TMainForm.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text = 'Fit' then
ImageEnVect1.Fit
else
ImageEnVect1.Zoom := StrToIntDef(ComboBox1.Text, 100);
end;
procedure TMainForm.ImageEnVect1ViewChange(Sender: TObject;
Change: Integer);
begin
if Change = 0 then
ComboBox1.Text := IntToStr(trunc(ImageEnVect1.Zoom));
end;
// Tools > OpenBackgroundImage
procedure TMainForm.Openbackgroundimage1Click(Sender: TObject);
begin
if dlgOpenImage.Execute then
ImageEnVect1.IO.LoadFromFile(dlgOpenImage.FileName);
end;
// Tools > AdjustColor
procedure TMainForm.Adjustcolor1Click(Sender: TObject);
begin
ImageEnVect1.Proc.DoPreviews(ppeColorAdjustments);
end;
// Tools > Effects
procedure TMainForm.Effects1Click(Sender: TObject);
begin
ImageEnVect1.Proc.DoPreviews(ppeSpecialEffects);
end;
// Set image
procedure TMainForm.Button1Click(Sender: TObject);
begin
if dlgOpenImage.Execute then
begin
ImageEnVect1.SetObjBitmapFromFile(IEV_NEXT_INSERTED_OBJECT, dlgOpenImage.FileName);
ImageEnView1.IEBitmap.Assign(ImageEnVect1.ObjBitmap[IEV_NEXT_INSERTED_OBJECT]);
ImageenView1.Update;
ImageEnView1.Fit;
end;
end;
// Adjust image
procedure TMainForm.Button2Click(Sender: TObject);
var
q: integer;
tempProc:TImageEnProc;
begin
// find first iekBITMAP object
with ImageEnVect1 do
for q := 0 to SelObjectsCount - 1 do
if ObjKind[SelObjects[q]] = iekBITMAP then
begin
tempProc:=TImageEnProc.Create(nil);
tempProc.AttachedIEBitmap := ObjBitmap[SelObjects[q]];
tempProc.DoPreviews([peAll]);
tempProc.Free;
Update;
exit;
end;
end;
// Tools > Gray force
procedure TMainForm.Grayforce1Click(Sender: TObject);
begin
with GrayForce do
if ShowModal = mrOK then
ImageEnVect1.Proc.CastColorRange(IEGradientBar1.RGB, IEGradientBar2.RGB, TColor2TRGB(HSVBox1.Color));
end;
// Edit > Undo
procedure TMainForm.Undo1Click(Sender: TObject);
begin
ImageEnVect1.Proc.Undo;
end;
// Edit > Copy
procedure TMainForm.Copy1Click(Sender: TObject);
begin
ImageEnVect1.Proc.SelCopyToClip;
end;
// Edit > Cut
procedure TMainForm.Cut1Click(Sender: TObject);
begin
ImageEnVect1.Proc.SelCutToClip;
end;
// Edit > Paste
procedure TMainForm.Paste1Click(Sender: TObject);
begin
ImageEnVect1.Proc.PasteFromClipboard;
end;
// Edit > PasteInRect
procedure TMainForm.Pasteinrect1Click(Sender: TObject);
begin
ImageEnVect1.Proc.SelPasteFromClip( True, False, True );
end;
// Delete object
procedure TMainForm.Deleteobject1Click(Sender: TObject);
begin
while imageenvect1.SelObjectsCount > 0 do
imageenvect1.RemoveObject(imageenvect1.selobjects[0]);
end;
// Set Font
procedure TMainForm.Button3Click(Sender: TObject);
begin
if FontDialog1.Execute then
StyleControlChange(self);
end;
// Stretch
procedure TMainForm.Button4Click(Sender: TObject);
begin
FontDialog1.Font.Height := 0;
StyleControlChange(self);
end;
procedure TMainForm.ImageEnVect1MeasureHint(Sender: TObject;
var Text: string; Value: Double);
begin
statusbar1.SimpleText := Text;
end;
// hide objects
procedure TMainForm.SpeedButton16Click(Sender: TObject);
begin
ImageEnVect1.AllObjectsHidden := SpeedButton16.Down;
end;
// Copy objects to background
procedure TMainForm.Copyobjectstobackground1Click(Sender: TObject);
begin
ImageEnVect1.CopyObjectsToBack(true);
end;
// Objects count
procedure TMainForm.Objectscount1Click(Sender: TObject);
begin
ShowMessage('Objects count = ' + IntTostr(ImageEnVect1.ObjectsCount));
end;
// Fit bitmap to objects
procedure TMainForm.Fitbitmaptoobjects1Click(Sender: TObject);
var
rc: TRect;
begin
rc := ImageEnVect1.ObjectsExtents;
ImageEnVect1.IEBitmap.Width := rc.Right;
ImageEnVect1.IEBitmap.Height := rc.Bottom;
ImageEnVect1.Update;
end;
// Select all objects
procedure TMainForm.Selectall1Click(Sender: TObject);
begin
ImageEnVect1.SelAllObjects;
end;
procedure TMainForm.Copy2Click(Sender: TObject);
begin
ImageEnVect1.ObjCopyToClipboard;
end;
procedure TMainForm.Cut2Click(Sender: TObject);
begin
ImageEnVect1.ObjCutToClipboard;
end;
procedure TMainForm.Paste2Click(Sender: TObject);
begin
ImageEnVect1.ObjPasteFromClipboard(5, 5);
end;
// Edit Objects > Undo
procedure TMainForm.Undo2Click(Sender: TObject);
begin
ImageEnVect1.ObjUndo;
ImageEnVect1.ObjClearUndo;
end;
// Antialiasing checkbox
procedure TMainForm.CheckBox7Click(Sender: TObject);
begin
ImageEnVect1.ObjAntialias := CheckBox7.Checked;
end;
procedure TMainForm.ImageEnVect1TextKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// Make the Enter key cancel text input
if Key = VK_Return then
begin
Key := 0;
ImageEnVect1.CancelInteracts;
end;
end;
// Pen color
procedure TMainForm.Panel3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ColorDialog1.Color := Panel3.Brush.Color;
if ColorDialog1.Execute then
Panel3.Brush.Color := ColorDialog1.Color;
StyleControlChange(self);
end;
// Brush color
procedure TMainForm.Panel4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ColorDialog1.Color := Panel4.Brush.Color;
if ColorDialog1.Execute then
Panel4.Brush.Color := ColorDialog1.Color;
StyleControlChange(self);
end;
procedure TMainForm.spdForceAltKeyClick(Sender: TObject);
begin
ImageEnVect1.ForceAltKey := spdForceAltKey.Down;
end;
end.