As asked here is the code for the init of the form.
x=0
scan
x=x+1
this.addobject('item'+alltrim(str(x)),'shape')
t='this.item'+alltrim(str(x))+'.tooltiptext="'+alltrim(visual.label)+'"'
&t
t='this.item'+alltrim(str(x))+'.fillstyle=0'
&t
t='this.item'+alltrim(str(x))+'.fillcolor=visual.color'
&t
t='this.item'+alltrim(str(x))+'.height=visual.height'
&t
t='this.item'+alltrim(str(x))+'.width=visual.width'
&t
t='this.item'+alltrim(str(x))+'.left=visual.left'
&t
t='this.item'+alltrim(str(x))+'.top=visual.top'
&t
t='this.item'+alltrim(str(x))+'.click=visual.code'
&t
t='this.item'+alltrim(str(x))+'.visible=.t.'
&t
endscan
this.refresh
(visual is the alias of the table)
Let me know what you think. If you create a custom shape you can use that in the add object to create even
more interesting maps.