| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 70
- TURBO-LESSON 15: INTERACTIVE SCREEN HANDLING
- OBJECTIVES - In this lesson, you will learn about:
- 1. Setting up a Data Entry Screen
- 2. Being nice to users - ClrScr
- 3. Getting around the screen - GotoXY
- 4. Screen messages and accepting user input
- 1. Setting up a Data Entry Screen.
- For most computer processing applications you will need to
- provide for entry of data. This is one of the points where your
- programs interact with the person using the program.
- How your programs are viewed by those using them will depend on
- how well you manage the user-computer interaction on the screen.
- In this lesson you will try some of the basic techniques of
- screen handling for data entry.
- ##### DO:
- Run PROG15.
- Take a look at the program to see how this screen was produced.
- ##### DO:
- Experiment with PROG15.
- Run the program after each of the following:
- (1) Add or delete spaces in the WriteLn statements to move the
- various items.
- (2) Line the prompts up on the left. You may want to keep the
- colons in a vertical column after you move the prompts.
- (3) In the main program, add two more statements:
- Print_Entry_Screen;
- Print_Entry_Screen;
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 71
- 2. Being nice to users - ClrScr.
- Pascal provides a predefined procedure to clear the screen.
- Screen interaction will go smoother if unnecessary items are
- removed when no longer needed.
- ##### DO:
- (First, remove the 2 extra Print_Entry_Screen statements. Notice
- that you could just load a new copy of PROG15.)
- Add the following statement as the first statement in the main
- program:
- WriteLn('This is something leftover from previous processing');
- Run the program.
- How does the data entry screen look now?
- This problem was not apparent before, because the screen was
- cleared before the program executed. The message you just added
- makes the situation more realistic - there are often things left
- on the screen that need to be cleared.
- The procedure, ClrScr, will clear the screen.
- Where should you put ClrScr, in the main program, or in the
- procedure?
- Right! In the procedure, because clearing the screen is really
- just a part of printing the entry screen.
- ##### DO:
- At the beginning of the Procedure, Print_Entry_Screen, add:
- ClrScr;
- Run the program. Is the "leftover" message gone?
- NOTE: YOU SHOULD ALWAYS CLEAR THE SCREEN AS NEEDED. EARLIER
- VERSIONS OF TURBO CLEARED THE SCREEN AT THE BEGINNING OF
- THE PROGRAM, BUT THAT IS THE TYPE OF THING YOU SHOULD NOT
- DEPEND ON. WHAT IF THE NEXT VERSION CHANGES?
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 72
- 3. Getting around the screen - GotoXY.
- Cursor positioning is done with the predefined procedure, GotoXY.
- To find out how it works, try PROG15A.
- ##### DO:
- Examine PROG15A, then run it a few times using the following
- values for X and Y:
- X Y
- 1 20
- 40 1
- 70 23
- Does GotoXY work the way you expected?
- If that is the way you expected it to work, no problem.
- If you, like me, find that X and Y seem to be reversed, you can
- either learn to use GotoXY as is, or write a procedure to make it
- work the way you want it to!
- ##### DO:
- Add the following procedure before the main BEGIN END block:
- PROCEDURE Locate(X, Y : Integer);
- BEGIN
- GotoXY(Y, X); { Note the reversed Y, X here }
- END;
- Also change the GotoXY(X, Y) statement in the main program to:
- Locate(X, Y);
- Run the program several times using the values:
- X Y
- 1 50
- 10 1
- 23 70
- My own choice is to use GotoXY as is, but if you work in both
- Pascal and Basic at the same time, you might want some procedure
- like Locate, to make the cursor positioning work the same in
- both.
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 73
- 4. Screen messages and accepting user input.
- ##### DO:
- Examine PROCEDURE Get_First_Name in PROG15B.
- Notice the use of GotoXY(13,3) to position the cursor next to the
- first name prompt on the screen.
- Read(First_Name) is used instead of ReadLn. Read and ReadLn will
- be contrasted and explored in a later lesson. For now, just note
- that the procedure works.
- ##### DO:
- Run PROG15B.
- I hope you got the name right. No second chance here!
- Unfortunately, mistakes are made in data entry, and you must
- provide a convenient way to correct them.
- ##### DO:
- Look at FUNCTION OK in PROG15C.
- Also notice how PROCEDURE Get_First_Name has been changed to use
- the information provided by FUNCTION OK.
- The user can now correct typing mistakes before going on.
- PROGRAMMING NOTE: OBSERVE THAT FUNCTION OK MUST BE DECLARED
- BEFORE PROCEDURE GET_FIRST_NAME SINCE THE
- PROCEDURE USES THE FUNCTION.
- ##### DO:
- Run the program, entering a few wrong names of different lengths
- before entering the correct name (your name?)
- Do you detect a problem? There are screen leftovers again!
- There is another procedure, ClrEol, which clears from the cursor
- position to the end of the line.
- ##### DO:
- Insert the statement: ClrEol;
- after the GotoXY(1,23) statement in FUNCTION OK and after the
- GotoXY(13,3) statement in PROCEDURE Get_First_Name.
- Run the program again, testing for leftovers. Enter several
- names of different lengths again.
- How's that? You're on your way toward friendly input screens!
- Œ
|