ArcObject - PowerPoint PPT Presentation

About This Presentation
Title:

ArcObject

Description:

So you need to start using ArcGIS, eh? ... ArcObject – PowerPoint PPT presentation

Number of Views:95
Avg rating:3.0/5.0
Slides: 29
Provided by: aas107
Category:

less

Transcript and Presenter's Notes

Title: ArcObject


1
ArcObject
2
Chapter 8
3
Chapter 7 Coding a For loop
  • A For loop begins with the For keyword and ends
    with the Next keyword.
  • The For keyword on the first line is followed by
    the variable and its start and end values. The
    block of code between this line and the Next
    keyword runs repeatedly until the variable
    exceeds the end value.
  • For variable StartValue To EndValue
  • Block of code here
  • Next

4
Chapter 7 Coding a For loop
  • The For loop below would print a map ten times.
    The first time through the loop, the variable x
    is set equal to 1 ( the start value) and the
    block of code runs to print the first map. The
    second time through the loop, x is set equal to 2
    and a second map prints. The third time, x
    changes to 3 and a third map prints. The third
    time, x changes to 3 and a third map prints. The
    loop stops running after the tenth map is
    printed.
  • For x 1 to 10
  • Code here to print map
  • MsgBox Printing Map x
  • Next

5
Chapter 7 Coding a For loop
  • It is common to begin with 1 and end with the
    number of times that you need the loop to run
    however, you can use any starting and ending
    values you like.
  • If your loop is processing a list of items, you
    can also skip over items using the Step keyword.
  • Suppose you have a database of 10,000 customers
    and you only have enough money to mail a coupon
    to 5 percent of them. Your want the coupons to go
    a mixture of new and old customers.
  • The loop below is designed to go to every
    twentieth record starting with record 1. For
    every twentieth record, the customers address is
    printed on a mailing label.
  • For x 1 , to 10000 Step 20
  • in the customer table go to record x
  • get address for x
  • print a mailing label
  • Next

6
Chapter 7 Coding a For loop
  • Looping statements are also useful for populating
    lists, like those in combo boxes. The only way to
    add values to a combo box is with the ComboBoxs
    AddItem method. Suppose you wanted to make a
    combo box in which the user can choose a number
    from one to ten.
  • To put the numbers one though ten in the combo
    box, you could write ten lines of code with the
    AddItem method.
  • cboFavoriteNumber.AddItem 1
  • cboFavoriteNumber.AddItem 2
  • cboFavoriteNumber.AddItem 3
  • cboFavoriteNumber.AddItem 4
  • cboFavoriteNumber.AddItem 5
  • cboFavoriteNumber.AddItem 6
  • cboFavoriteNumber.AddItem 7
  • cboFavoriteNumber.AddItem 8
  • cboFavoriteNumber.AddItem 9
  • cboFavoriteNumber.AddItem 10

7
Chapter 7 Coding a For loop
  • Luckily, theres faster way-you can write a For
    loop and reduce those ten lines of code to three.
    The loop below increments from 1 to 10, adding
    those values to the combo boxs list.
  • For x 1 to 10
  • cboFavoriteNumber.AddItem x
  • Next

8
Exercise 8a Ð?t v?n d?
  • After a two-week vacation, you return to your GIS
    programming job at the U.S. Census Bureau to find
    that a coworker has tried to customize your
    Census Population Maps dialog box. Unfortunately,
    many mistakes were made and the dialog box no
    longer works.
  • In this exercise, you are going to find and fix
    the compile, run time, and logic errors
    introduced by your coworker.

9
Exercise 8
1. Start ArcMap and open ex08a.mxd in the
C\ArcObjects\Chapter08 folder. When the Map
opens, you see U.S counties and the Census Maps
button on the ArcMap Standard toolbar. This
exercise assumes you are using Visual Basic
Editors default error-trapping option, so you
will confirm your setting.
10
Exercise 8
2. Click the Tools menu, point to Macros, and
click Visual Basic Editor. 3. In Visual Basic
Editor, click the Tools menu and click Options.
On the Options dialog, click the General tab.
Make sure the Error Trapping option is set to
Break on Un handled Errors. 4. Click OK. Then
close Visual Basic Editor.
11
Exercise 8
5. Click Census Maps. Before your code could
compile, a VBA syntax error was located. When a
compile error is located, an error message
appears, the code stops running, and Visual Basic
Editor opens.
12
Exercise 8
6. Click OK on the error message The error is
highlighted in blue and its procedure in yellow.
For some reason, the Show method is on a line by
itself without a corresponding form. What can
this mean? Is the line sopposed to display a
form? Was the word show accidentally typed in,
or is it a remnant of a previous line of
code? Some comment lines here might have held
answer these questions. It doesnt look as if
this show method has any purpose, but for now,
youll turn it into a comment instead of delete
it.
13
Exercise 8
7. Comment out Show by putting an apostrophe in
front of it. Show The comment line turn green.
Normally, you see comment to make notes to
yourself ang other programmer. Comment are also
useful if you want to leave in optional lines of
code. For example, you might have three blocks of
code that do the same task in different waysa.
You can keep all three, and comment out two of
them. Only the uncommented block will run.
14
Exercise 8
Now that youve fixed the compile error, youll
run the code again. 8. Close Visual Basic
Editor. 9. Click OK to stop the debugger. 10.
Click OK on the User Interrupt message. Your code
was trying to compile and run. You are
interrupting that process so you can return to
ArcMap and retest the CensusMaps button.
15
Exercise 8
11. Click the CensusMaps button. Another error
appears this time, its a run time error. The
message indicates an error in the Priect. This
Document. CensusMaps procedure. The type mismatch
error means your code uses a data type that VBA
is not expecting. For example, you may be using a
number where VBA needs a string. VBA usually
highlights the line of code that contains error.
Some error, however, span more than one line of
codeand more than one procedure. When that
happens, all VBA can do is show you the procedure
where it had to stop running. Click OK on the
type mismatch error.
16
Exercise 8
13. Right-click the CensusMaps button and click
View Source. Visual Basic Editor open to the
CensusMaps macro. To help find the error, you
will turn on the Debug toolbar and step through
the code. 14. In Visual Basic Editor, click the
View menu, point to Toolbars, and make sure the
Debug toolbar is checked to open it. 15. In The
ThisDocument code window, click your cursor
inside the CensusMaps procedure. Then, on the
Debug toolbar, click Step. The first line of code
in the macro turns yellow. This line will run as
soon as you click Step again.
17
Exercise 8
16. Click Step The procedures first line runs.
The second line is yellow and ready to run.
18
Exercise 8
17. Click Step After you click Step, a forms
code window opens and the first line of code in
its initialize event procedure turns yellow. Your
stepping has taken you into a second procedure in
a second code window. The Show method opens a
form, but before the form opens, its
UserForm_Initialize event must run. So the first
line of the initialize event is now yellow and
ready to run with the next step. You now see that
this error is a bit complicated. For some reason,
the Show method was unable to run to completion
to open the form. However, there isnt anything
wrong with the Show line of code. The bad line is
actually inside the forms initialize event. 18.
Click Step The first line of the initialize
procedure runs and the first line in the for loop
is hightlighted. (Dim and other declaration are
skipped.)
19
Exercise 8
When an error spans procedures, you can see a
list of them by clicking the Call Stack button.
Call Stack lists the procedure that you are
currently stepping through. The initialize event
procedure (the current procedure) is at the top
of the list.
20
Exercise 8
19. Click Step A type mismatch appears because
the code tries to use a string where an integer
is expected. The StartValue is 3, but the
EndValue is Eight. The EndValue shout be. For a
detailed description of this error, you can click
the error messages Help button. The type
mismatch error above is error number 13. Common
errors like this have an indentification number
that you can look up. You can see a list of all
errors by searching the Microsoft Visual Basic
online help for Trappable Errors.
21
Exercise 8
20. Click OK. 21. Change Eight to 8. You have
fixed the run-time error. The code is now ready
to test again.
22
Exercise 8
22. On the Debug toolbar, click Run. ( This Run
Button works just the same as the one on the
Standard toolbar.) ArcMap and the Census
Population Maps dialog box appear. If you click
MakeMap, it will make a map. However , some
people have complained that they get an error
message when they pick certain years. 23. Click
the Choose a Census year drop-down arrow to see
the years that can be selected. In your original
code, only the decade years were added to the
drop-down list, but now every year between 1930
and 2000 in there. The Counties layer attribute
table, however, only has data for each decade.
Having all those extra years in the drop-down
list is a logic error a flaw in the program
design but it leads to a run-time error. If the
you picks a nondecade year, there is no
corresponding data to display. ( It would be a
pure logic error if incorrect data was shown and
no error message was generated.) 24. Click Quit.
23
Exercise 8
Next, you will add a breakpoint and step through
the code to find the logic error. 25. Make sure
the code module for frmCensus is active. 26. In
the UserForm_Initialize event, add a breakpoint
by clicking in the margin, to the left of the
first line of the Years loop. The line turns red.
24
Exercise 8
Now you will run all the code up to that
line. 27. On the Debug toolbar, click Run. Your
code runs to the breakpoint. The code pauses and
that line turns yellow. While its paused you can
run, step, or view variable values. 28. Click
Step. Then hover your mouse over the intYear
variable. The variable contains 1930, the first
value in the loop. Everything looks normal so
far. Youll run the loop again.
25
Exercise 8
29.Click Step twice to run through the loop
again. Hover your mouse over the intYear
variable. You expect to see 1940, but you see
1931. A logic error is adding every year to the
cboYears combo box. The loop is running as told,
but its not incrementing by 10, because the Step
keyword and 10 are missing from the loops first
line ( the red line ). 30. Add Step 10 at the end
of the first line of the For loop.
For intYear 1930 To 2000 Step 10
26
Exercise 8
31. In the margin, click the red circle to remove
the breakpoint. 32. On the Debug toolbar, click
the Reset button. The code is reset back to its
first line.
27
Exercise 8
33. Click the Run button. 34. The dialog box
appears. Click the choose a Census year drop-down
arrow and click 1950. Now, only the decade years
appear as choices. 35. Set the number of classes
to 5 and the state to Texas. Click MakeMap.
28
Exercise 8
36. Click Quit. The suggestions below can
minimize errors in your code. Turn on Option
Explicit to identify typing mistakes in variable
names. the code and decipher any error
messages. Use the Debug toolbar to isolate bad
lines of code. Test for logic errors by
entering values for which you already know the
correct results. Try all combinations of
options on dialog box controls. Have someone
else test the logic and try all the controls. 37.
If you want to save your work, click the File
menu in ArcMap and click Save As. Navigate to C
\ArcObjects\Chapter08. Rename the file
my_ex08a.mxd and click Save. If you are
continuing with the next chapter, leave ArcMap
open. Other wise close it.
Write a Comment
User Comments (0)
About PowerShow.com