(*
I have a bug in my Mathematica program destined for the Wolfram Demonstration Project. Can anyone pleas give me a hint what I do wrong.
The following Mathematica notebook allows the use to create, store and delete polygons.
When I hit the "delete last vertex" button or the "delete last polygon" button,
I get strange error messages. Any help would be very much appreciated,
please send any answers to k a r l s c h e r e r 3 @ y a h o o . c o . n z
(without the gaps). Even someone's email address of a person who could help me would be great.

Getting desparate.
OK, here is the code:
*)


ClearAll["Global`*"];
(* -------------- define the orthogonal grid :---------------- *)
lx =30; ly=30;(*size of lattice *)
rx=Range[lx]; ry=Range[ly];
(* Tuples[list,n] Cell[TextData[{
"generate all possible ",
Cell[BoxData[
StyleBox["n", "TI"]], "InlineFormula"],
"-tuples of elements from ",
Cell[BoxData[
StyleBox["list", "TI"]], "InlineFormula"]
}], "TableText"]
*)lattice = Point[Tuples [{rx,ry}]];
(* -------------- define the isometric grid :---------------- *)
d=1 ;(*horizontal grid spacing *)
h=Sqrt[3]/2; (* height of triangles*)
lx =20; ly=10;(*size of lattice *)
rx1= Range[0,lx];
ry1 = 2*h* Range[0,ly];
(* Cell["generate all possible pairs of elements from these lists:", "TableText"] *)
lattice1 = Tuples [{rx1,ry1}]; (* lattice 1 *)
rx2 = .5 +rx1;
ry2= h+ry1;
lattice2 = Tuples [{rx2,ry2}]; (* lattice2 *)
isolattice = Point[Join[lattice1, lattice2]];
(* -------------- define snap to ortho and isometric grid :---------------- *)
osnap[{x_,y_}]:={Floor[x +.5],Floor[y +.5]}
isosnap[{p_,q_}]:= With[
{d=Floor[Floor[q+h/2,2 h]-Floor[q+h/2, h]]},
{Floor[p+ (1-d)/2]+d/2,Floor[q+h/2, h]}
]
snap[p_]:=
If[gridsnap,
If[ortho,osnap[p],isosnap[p]],
p
]
(* --------------manipulate--------------------*)
Manipulate[
ClickPane[
Graphics[
{
(* ------- draw grid ---------------- *)
LightGray,
If[grid,
If[ortho,lattice,isolattice]
,{}
],

(* ------- draw text ---------------- *)
Black,
{Text[Style["Number of stored polygons:",12],{4,-1}]},
{Text[Style[Length[pols],12],{8.6,-1}]},

{Text[Style["Stored polygons shown:",12],{13.5,-1}]},
{Text[Style[Floor[1/2+ showpols*Length[pols]],12],{17.6,-1}]},

(* -------store a new polygon ---------------- *)
If[store,
{store=False,
If[Length[pts]>0,
{pols=AppendTo[pols, pts],
polcols=AppendTo[polcols, col1],
pts={}
},
{}]
},{}
],

(* ------- draw new points ---------------- *)
Black,PointSize[pointsize],
Point[pts], (* draw points *)

(* ------- draw next polygon ---------------- *)
FaceForm[col1],
EdgeForm[If[outline,Thin,None]],
Opacity[opacity],Polygon[pts],

(* ------- draw stored polygons ---------------- *)
Table[
If[showpols(i-.5)/Length[pols],
{FaceForm[polcols[[i]]],Polygon[pols[[i]]]}
,{}],
{i,Length[pols]}
] ,

(* -------delete current polygon ---------------- *)
If[delnew,
{delnew=False,
pts={}
},{}
],

(* -------delete all stored polygons ---------------- *)
If[delall,
{delall=False,
pols={},polcols={}
},{}
],

(* -------delete last vertex of new polygon ---------------- *)
If[delvertex,
{delvertex=False,
If[Length[pts]>0,
pts=Delete[pts,-1]
,{}]
}
,{}]

(* -------delete last shown polygon ---------------- *)
If[delmax,
{delmax=False,
If[Length[pols]>0,
With[
{i=Floor[1/2+ showpols*Length[pols]]},
{pols=Delete[pols,i],polcols=Delete[polcols,i]}
],{}]
},{}]

},
PlotRange{{-.2,18.2},{-2.2, 18.2}}
], (* end graphics *)
(
{ (* here we act on the mouseclicks (we are in a ClickPane !) *)
pts=AppendTo[pts,snap[#]] (* store next vertex *)
}
)&
], (* end clickpane *)

Style["Grid Controls",Bold],
{{grid,True,Style["show grid"]},{True,False}},
{{ortho,False,Style["ortho grid"]},{True,False}},
{{gridsnap,True,Style["snap to grid\n"]},{True,False}},

Style["Global Polygon Controls",Bold],
{{outline,True,Style["outline"]},{True,False}},
{{opacity,.7,Style["opacity\n"]},0,1,ImageSizeSmall},

Style["Controls For New Polygon",Bold],
{{col1,Cyan,Style["face colour"]},Red,ControlTypeColorSlider,ImageSizeSmall},
{{pointsize,.02,Style["pointsize new polygon",Black]},0,.03,ControlTypeSlider,ImageSizeSmall},
{{delvertex,False,Style["delete last vertex"]},{True,False}},
{{delnew,False,Style["delete new polygon"]},{True,False}},
{{store,False,Style["store new polygon\n",Blue,Bold]},{True,False}},

Style["Controls For Stored Polygons",Bold],
{{showpols,1,Style["show stored polygons"]},0,1,ImageSizeSmall},
{{delmax,False,Style["delete last shown"]},{True,False}},
{{delall,False,Style["delete all stored"]},{True,False}},

{{pols,{}},ControlTypeNone},
{{pts,{}},ControlTypeNone},
{{polcols,{}},ControlTypeNone},
ControlPlacementLeft,
SaveDefinitionsTrue
]

Manipulate[
ClickPane[
Graphics[
{
(* ------- draw grid ---------------- *)
LightGray,
If[grid,
If[ortho,lattice,isolattice]
,{}
],

(* ------- draw text ---------------- *)
Black,
{Text[Style["Number of stored polygons:",12],{4,-1}]},
{Text[Style[Length[pols],12],{8.6,-1}]},

{Text[Style["Stored polygons shown:",12],{13.5,-1}]},
{Text[Style[Floor[1/2+ showpols*Length[pols]],12],{17.6,-1}]},

(* -------store a new polygon ---------------- *)
If[store,
{store=False,
If[Length[pts]>0,
{pols=AppendTo[pols, pts],
polcols=AppendTo[polcols, col1],
pts={}
},
{}]
},{}
],

(* ------- draw new points ---------------- *)
Black,PointSize[pointsize],
Point[pts], (* draw points *)

(* ------- draw next polygon ---------------- *)
FaceForm[col1],
EdgeForm[If[outline,Thin,None]],
Opacity[opacity],Polygon[pts],

(* ------- draw stored polygons ---------------- *)
Table[
If[showpols
(i-.5)/Length[pols],
{FaceForm[polcols[[i]]],Polygon[pols[[i]]]}
,{}],
{i,Length[pols]}
] ,

(* -------delete current polygon ---------------- *)
If[delnew,
{delnew=False,
pts={}
},{}
],

(* -------delete all stored polygons ---------------- *)
If[delall,
{delall=False,
pols={},polcols={}
},{}
],

(* -------delete last vertex of new polygon ---------------- *)
If[delvertex,
{delvertex=False,
If[Length[pts]>0,
pts=Delete[pts,-1]
,{}]
}
,{}]

(* -------delete last shown polygon ---------------- *)
If[delmax,
{delmax=False,
If[Length[pols]>0,
With[
{i=Floor[1/2+ showpols*Length[pols]]},
{pols=Delete[pols,i],polcols=Delete[polcols,i]}
],{}]
},{}]

},
PlotRange
{{-.2,18.2},{-2.2, 18.2}}
], (* end graphics *)
(
{ (* here we act on the mouseclicks (we are in a ClickPane !) *)
pts=AppendTo[pts,snap[#]] (* store next vertex *)
}
)&
], (* end clickpane *)

Style["Grid Controls",Bold],
{{grid,True,Style["show grid"]},{True,False}},
{{ortho,False,Style["ortho grid"]},{True,False}},
{{gridsnap,True,Style["snap to grid\n"]},{True,False}},

Style["Global Polygon Controls",Bold],
{{outline,True,Style["outline"]},{True,False}},
{{opacity,.7,Style["opacity\n"]},0,1,ImageSize
Small},

Style["Controls For New Polygon",Bold],
{{col1,Cyan,Style["face colour"]},Red,ControlType
ColorSlider,ImageSizeSmall},
{{pointsize,.02,Style["pointsize new polygon",Black]},0,.03,ControlType
Slider,ImageSizeSmall},
{{delvertex,False,Style["delete last vertex"]},{True,False}},
{{delnew,False,Style["delete new polygon"]},{True,False}},
{{store,False,Style["store new polygon\n",Blue,Bold]},{True,False}},

Style["Controls For Stored Polygons",Bold],
{{showpols,1,Style["show stored polygons"]},0,1,ImageSize
Small},
{{delmax,False,Style["delete last shown"]},{True,False}},
{{delall,False,Style["delete all stored"]},{True,False}},

{{pols,{}},ControlType
None},
{{pts,{}},ControlType
None},
{{polcols,{}},ControlType
None},
ControlPlacement
Left,
SaveDefinitions
True

]