Navigation: Language Reference > App C - PROP: Runtime Properties > Complete Property List >====== PROP:Xorigin and PROP:YOrigin ====== | |
(how much a window or control has been scrolled)
Attributes of a SHEET, IMAGE, or LIST control (which have horizontal and/or vertical scrollbar(s)) that sets or retrieves how much the control has been scrolled. XORIGIN (PROP:XOrigin) specifies how much the control has scrolled in the X direction. YORIGIN (PROP:YOrigin) specifies how much the control has scrolled in the Y direction. As the example shows below, these properties are also valid on a WINDOW.
This property returns the value that CHOICE( ) would return for the first visible row of a referenced list box. This property allows you to calculate the current position of the highlighted row, (e.g. CHOICE(?List) - ?List{PROP:YOrigin} + 1)
You can also set this property using the following syntax:
?List {PROP:YOrigin} = n
where n is the topmost visible row to scroll the list box to. The runtime library will then adjust the given value to show as many rows as possible. For example, if
n + (?List{PROP:Items} - 1) > ?List{PROP:LineCount}, n is changed to ?List{PROP:LineCount} - (?List{PROP:Items} - 1)
If n <;= 0, n is changed to 1.
Example
PROGRAM
MAP
END
S STRING(20)
Window WINDOW('Caption'),AT(,,400,250),FONT('MS Sans Serif',8,,FONT:regular)|
,IMM,VSCROLL, STATUS,SYSTEM,GRAY,CENTER
ENTRY(@S20),AT(10,100),USE(S,,?S1),SCROLL
ENTRY(@S20),AT(10,500),USE(S,,?S2),SCROLL
ENTRY(@S20),AT(10,900),USE(S,,?S3),SCROLL
END
y1 UNSIGNED
y2 UNSIGNED
Wy1 UNSIGNED
Wy2 UNSIGNED
Control SIGNED
CODE
OPEN(Window)
ACCEPT
CASE EVENT()
OF EVENT:Selected
Control = SELECTED()
IF Control
y1 = Control {PROP:yPos}
y2 = y1 + Control {PROP:Height}
Wy1 = 0{PROP:YOrigin} !read Yorigin
Wy2 = Wy1 + 0 {PROP:ClientHeight}
IF y1 <; Wy1
0{PROP:YOrigin} = CHOOSE (y1 <; 20, 0, y1 - 20)
ELSIF y2 > Wy2
0{PROP:YOrigin} = Wy1 + y2 - Wy2 + 20 !set Yorigin
END
END
END
END
CLOSE(Window)
See Also: PROP:LineCount