home products news downloads documentation support gallery online maps resellers search
TNTmips Downloads Menu

HOME

CONTACT US

CURRENT RELEASE
  TNT 2013

DEVELOPMENT VERSION
  TNT 2014

TNTmips Pro
PRIOR RELEASES
  TNT 2012

FREE SOFTWARE
  TNTmips Free
  TNTatlas
  TNTsdk

MORE DOWNLOADS
  HASP Key Driver
  Screen Recorder
  TNT Language Kits
  Sample Geodata
  TNT Scripts

DOCUMENTATION
  TNTmips Tutorials
  Tutorial Datasets
  Technical Guides
  Scripts
  Quick Guides

MORE INFO
  Download FAQs
  FTP
  Download Managers
  Find Reseller

SITE MAP


ParcelToolModal.sml

See other examples of Tool and Macro scripts ...


#  ParcelToolModal.SML - Allows user to select and highlight a vector polygon
#	representing a parcel.  Script opens a Visual Basic form showing the
#  parcel ID from the selected polygon.  User enters Last Name and First
#  Name in the Visual Basic form and the database is updated.

#  Created by: Randy Smith
#  Most recent revision: 9-2003

# The following symbols are predefined
#    class GRE_VIEW View            {use to access the view the tool script is attached to}
#    class GRE_GROUP Group          {use to access the group being viewed if the script is run from a group view}
#    class GRE_LAYOUT Layout        {use to access the layout being viewed if the script is run from a layout view} 
# 
# The following values are also predefined and are valid when the various On...() 
# functions are called which deal with pointer and keyboard events. 
#    number PointerX            Pointer X coordinate within view in pixels 
#    number PointerY            Pointer Y coordinate within view in pixels 

$import MicroImages_SML_OLE_Demo_EXE.VBForm

# Variable declarations
class GRE_LAYER_VECTOR vectorLayer;
class Vector targetVector;
class GRE_GROUP activegroup;
class VBForm form;
class Database ParcelDB;
class DBTABLEINFO parceltable;

# Checks layer to see if it is valid.
func checkLayer() {
	local numeric valid = true;

	# Get names layers if usable.  If not output error messages.
	# Get name of active layer if it is usable.  If not output an error message.
	if (activegroup.ActiveLayer.Type == "") {
		PopupMessage("Group has no layers!");
		valid = false;
		}
	else if (activegroup.ActiveLayer.Type == "Vector") {
		vectorLayer = activegroup.ActiveLayer;
		DispGetVectorFromLayer(targetVector, vectorLayer);
		if (targetVector.$Info.NumPolys < 1) {
			PopupMessage("No polygons!");
			valid = false;
			}
		parceltable = TableGetInfo( targetVector.Poly.ParcelInfo );
		}
	else {
		PopupMessage("Not a vector!");
		valid = false;
		}
	return valid;
	}

# Called when user presses 'left' pointer/mouse button. 
func OnLeftButtonPress () { 
	# If the selected layer is valid, proceed.
	if (checkLayer()) {
		# Set local variables
		local class POINT2D point;
		local numeric elementNum;
		local string parcelID$;

		# Check point.
		point.x = PointerX;
		point.y = PointerY;

		point = TransPoint2D(point, ViewGetTransViewToScreen(View, 1));
		point = TransPoint2D(point, ViewGetTransMapToView(View, vectorLayer.Projection, 1));

		elementNum = FindClosestPoly(targetVector, point.x, point.y, GetLastUsedGeorefObject(targetVector));

		if (elementNum > 0)
			vectorLayer.Poly.HighlightSingle(elementNum);
			parcelID$ = targetVector.Poly[elementNum].ParcelInfo.ParcelID$;

			form.Clear();			# Clear fields in VB Dialog window

			form.ElemID = parcelID$;
		   form.LastName = targetVector.Poly[elementNum].ParcelInfo.OwnerLastName$;
	      form.FirstName = targetVector.Poly[elementNum].ParcelInfo.OwnerFirstName$;

			form.DoModal();

			targetVector.Poly[elementNum].ParcelInfo.OwnerLastName$ = form.LastName;
			targetVector.Poly[elementNum].ParcelInfo.OwnerFirstName$ = form.FirstName;
			TableTriggerRecordChangedCallback( parceltable );
			vectorLayer.UnhighlightAllElements( );
		}
	}  # end of OnLeftButtonPress 

# Callback for when the active group changes.
proc cbGroup() {
	activegroup = Layout.ActiveGroup;
	}

# Called the first time the tool is activated.
# If the tool implements a dialog it should be created (but not displayed) here.
func OnInitialize () {
	if (Layout) {
		WidgetAddCallback(Layout.GroupSelectedCallback, cbGroup);
		activegroup = Layout.ActiveGroup;
		}
	else
		activegroup = Group;

	PopupMessage("Left-click in the View to select a parcel polygon.");

	}  # end of OnInitialize 


Back Home ©MicroImages, Inc. 2013 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010   USA
Business & Sales: (402)477-9554  Support: (402)477-9562  Fax: (402)477-9559
Business info@microimages.com  Support support@microimages.com  Web webmaster@microimages.com

25 March 2009

page update: 26 May 11