MOUSEWHEEL: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 28: Line 28:


{{PageExamples}}
{{PageExamples}}
''Example 1:'' Reading the cumulative mouse wheel "clicks".
; Example 1: Reading the cumulative mouse wheel "clicks".
{{CodeStart}}
{{CodeStart}}
DO: {{Cl|_LIMIT}} 100
{{Cl|DO}}
     DO WHILE {{Cl|_MOUSEINPUT}}
    {{Cl|_LIMIT}} {{Text|50|#F580B1}}
      Scroll = Scroll + {{Cl|_MOUSEWHEEL}}
     {{Cl|DO...LOOP|DO WHILE}} {{Cl|_MOUSEINPUT}}
      LOCATE 10, 20: PRINT Scroll
        Scroll = Scroll + {{Cl|_MOUSEWHEEL}}
     LOOP
        {{Cl|LOCATE}} {{Text|10|#F580B1}}, {{Text|20|#F580B1}}: {{Cl|PRINT}} Scroll
LOOP UNTIL INKEY$ = CHR$(13) ' press Enter to quit
     {{Cl|LOOP}}
{{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}({{Text|13|#F580B1}}) {{Text|<nowiki>' press Enter to quit</nowiki>|#919191}}
{{CodeEnd}}
{{CodeEnd}}


----


''Example 2:'' A simple text scrolling routine using the mouse wheel value to read a text array.
; Example 2: A simple text scrolling routine using the mouse wheel value to read a text array.
: You will need a text file that is large enough for this example.</center>
{{CodeStart}}
{{CodeStart}}
{{Cl|DIM}} Array$(100)
{{Cl|DIM}} Array$({{Text|100|#F580B1}})
{{Cl|LINE INPUT}} "Enter a file name with 100 or more lines of text: ", file$
{{Cl|LINE INPUT}} {{Text|<nowiki>"Enter a file name with 100 or more lines of text: "</nowiki>|#FFB100}}, file$
{{Cl|OPEN}} file$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #1
{{Cl|OPEN}} file$ {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|INPUT}} {{Cl|OPEN|AS}} #1
{{Cl|DO...LOOP|DO}} {{Cl|UNTIL}} {{Cl|EOF}}(1)
{{Cl|DO...LOOP|DO UNTIL}} {{Cl|EOF}}({{Text|1|#F580B1}})
  inputcount = inputcount + 1
    inputcount = inputcount + {{Text|1|#F580B1}}
  {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, Array$(inputcount)
    {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, Array$(inputcount)
  {{Cl|IF...THEN|IF}} inputcount = 100 {{Cl|THEN}} {{Cl|EXIT DO}}
    {{Cl|IF}} inputcount = {{Text|100|#F580B1}} {{Cl|THEN}} {{Cl|EXIT DO}}
{{Cl|LOOP}}
{{Cl|LOOP}}
{{Cl|FOR...NEXT|FOR}} n = 1 {{Cl|TO}} 21: {{Cl|PRINT}} Array$(n): {{Cl|NEXT}}
{{Cl|FOR}} n = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|21|#F580B1}}: {{Cl|PRINT}} Array$(n): {{Cl|NEXT}}
{{Cl|CLOSE}} #1
{{Cl|CLOSE}} #1
DO
{{Cl|DO}}
  {{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|_MOUSEINPUT}}
    {{Cl|DO...LOOP|DO WHILE}} {{Cl|_MOUSEINPUT}}
    {{Cl|IF...THEN|IF}} row >= 0 {{Cl|THEN}} row = row + {{Cl|_MOUSEWHEEL}} {{Cl|ELSE}} row = 0 'prevent under scrolling
        {{Cl|IF}} row >= {{Text|0|#F580B1}} {{Cl|THEN}} row = row + {{Cl|_MOUSEWHEEL}} {{Cl|ELSE}} row = {{Text|0|#F580B1}} {{Text|<nowiki>'prevent under scrolling</nowiki>|#919191}}
    {{Cl|IF...THEN|IF}} row > inputcount - 20 {{Cl|THEN}} row = inputcount - 20   'prevent over scrolling
        {{Cl|IF}} row > inputcount - {{Text|20|#F580B1}} {{Cl|THEN}} row = inputcount - {{Text|20|#F580B1}} {{Text|<nowiki>'prevent over scrolling</nowiki>|#919191}}
    {{Cl|IF...THEN|IF}} prevrow <> row {{Cl|THEN}} 'look for a change in row value
        {{Cl|IF}} prevrow <> row {{Cl|THEN}} {{Text|<nowiki>'look for a change in row value</nowiki>|#919191}}
      {{Cl|IF...THEN|IF}} row > 0 {{Cl|AND (boolean)|AND}} row <= inputcount - 20 {{Cl|THEN}}
            {{Cl|IF}} row > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} row <= inputcount - {{Text|20|#F580B1}} {{Cl|THEN}}
        {{Cl|CLS}}: {{Cl|LOCATE}} 2, 1
                {{Cl|CLS}}: {{Cl|LOCATE}} {{Text|2|#F580B1}}, {{Text|1|#F580B1}}
        {{Cl|FOR...NEXT|FOR}} n = row {{Cl|TO}} row + 20
                {{Cl|FOR}} n = row {{Cl|TO}} row + {{Text|20|#F580B1}}
          {{Cl|PRINT}} Array$(n)
                    {{Cl|PRINT}} Array$(n)
        {{Cl|NEXT}}
                {{Cl|NEXT}}
      {{Cl|END IF}}
            {{Cl|END IF}}
    {{Cl|END IF}}
        {{Cl|END IF}}
    prevrow = row 'store previous row value
        prevrow = row {{Text|<nowiki>'store previous row value</nowiki>|#919191}}
  {{Cl|LOOP}}
    {{Cl|LOOP}}
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} > ""
{{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} > {{Text|<nowiki>""</nowiki>|#FFB100}}
{{CodeEnd}}
{{CodeEnd}}
{{Small|Code by Ted Weissgerber}}
{{Small|Example by Ted Weissgerber}}
<center>Note: You will need a text file that is large enough for this example.</center>





Latest revision as of 19:58, 24 March 2024

The _MOUSEWHEEL function returns a positive or negative INTEGER value indicating mouse scroll events since the last read of _MOUSEINPUT.


Syntax

scrollAmount% = _MOUSEWHEEL


Description

  • Returns -1 when scrolling up and 1 when scrolling down with 0 indicating no movement since last read.
  • After an event has been read, the value resets to 0 automatically so cumulative position values must be added.
  • If no movement on the wheel has occurred since the last _MOUSEINPUT read, _MOUSEWHEEL returns 0.


Availability

  • Available for macOS since QB64-PE v3.13.0


Examples

Example 1
Reading the cumulative mouse wheel "clicks".
DO
    _LIMIT 50
    DO WHILE _MOUSEINPUT
        Scroll = Scroll + _MOUSEWHEEL
        LOCATE 10, 20: PRINT Scroll
    LOOP
LOOP UNTIL INKEY$ = CHR$(13) ' press Enter to quit

Example 2
A simple text scrolling routine using the mouse wheel value to read a text array.
You will need a text file that is large enough for this example.
DIM Array$(100)
LINE INPUT "Enter a file name with 100 or more lines of text: ", file$
OPEN file$ FOR INPUT AS #1
DO UNTIL EOF(1)
    inputcount = inputcount + 1
    LINE INPUT #1, Array$(inputcount)
    IF inputcount = 100 THEN EXIT DO
LOOP
FOR n = 1 TO 21: PRINT Array$(n): NEXT
CLOSE #1
DO
    DO WHILE _MOUSEINPUT
        IF row >= 0 THEN row = row + _MOUSEWHEEL ELSE row = 0 'prevent under scrolling
        IF row > inputcount - 20 THEN row = inputcount - 20 'prevent over scrolling
        IF prevrow <> row THEN 'look for a change in row value
            IF row > 0 AND row <= inputcount - 20 THEN
                CLS: LOCATE 2, 1
                FOR n = row TO row + 20
                    PRINT Array$(n)
                NEXT
            END IF
        END IF
        prevrow = row 'store previous row value
    LOOP
LOOP UNTIL INKEY$ > ""
Example by Ted Weissgerber


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage