You can do almostanything under Tptr with George's help!

Thatismore than you can say for EasyPtr!

On Monday 15 June 2009 16:49, Derek Stewart wrote:
> Hi Dilwyn,
>
> This is great,  wish there were more posting on Easyptr.
>
> Do you think the same thing could be done in Turboptr?
>
> Derek
>
> Dilwyn Jones wrote:
> >> It looks like you are reinventing the wheel but you will find much of
> >> what
> >> you want in Jonathan Hudson's code (C68) for CView. This is still to be
> >> found (tho' I haven't checked) on Dilwyn's web site. His handling of
> >> scrollable/pannable screens provided the basis for MView.
> >>
> >> Christopher Cave
> >
> > This is something I ought to document at some point, as it is not the
> > easiest of subjects if you have never used it before. This explanation
> > is for use with BASIC or compiled BASIC.
> >
> > I always use Easyptr 4 for this - earlier Easyptrs should work too
> > (unless you want to use GD2).
> >
> > This is done by using the MAWBAR (and MAWBARR if you want to use the
> > arrows, but MAWBAR is easier).
> >
> > 1. set up a suitable window, allowing 8 pixels across the width of a
> > vertical scroll bar, and 5 pixels deep for the horizontal pan bars.
> > The window does NOT expand to take these bars, they are drawn INSIDE
> > the window. So if you want a window to display, say, 480x200 pixels it
> > has to actually be 488 wide inside the window border and 485 deep.
> >
> > 2. Set up the pan and scroll bars with a MAWBAR command:
> > MAWBAR
> > #channel,app_window_number,wide%,high%,x_start%,y_start%,x_grid%,y_grid%
> >
> > wide% = number of vertical columns (can be bigger than screen)
> > high% = number of horizonatl rows (also can be bigger than screen)
> > x_start%, y_start% = coordinates of top left corner of the part shown
> > x_grid%,y_grid% = grid width and height. Could be 1 if graphics, or
> > text might be 6x10 for example
> >
> > 3. To remove the bar later (not explained in manual) use MWINDOW
> > #channel,app_window_num:MAWBAR #ch,0,0:mdraw
> > #channel,app_window_num,0,0:MDRAW #channel
> >
> > 4. Reading the bars is not as easy and needs a working example.
> > Basically, you use the value returned by MCALL to check if the action
> > done by the user was on a loose item (negative values), an application
> > window (1 to 256), or a special item number (>65536). Break down the
> > value of MCALL with MAWNUM and take appropriate SELectactions
> > depending on the values.
> >
> > MAWNUM with 4 parameters will break down the composite return value of
> > MCALL, which is operation code in bits 0-3 and the pixel position
> > information in bits 4 to 15.
> >
> > action = MCALL(#channel)
> > winum = action : REMark temporary value
> > mpnum = MAWNUM(#channel,winum,x_st%,y_st%)
> >
> > this returns mpnum as the action number (see easyptr manual) and winum
> > is the window number of the window hit. Then x_st% is the pixel
> > position of the hit onthe bar and y_st% is the length of the bar.
> >
> > action = MCALL(#channel)
> > 1900 SELect ON action
> > 1910    =-1,-2........ : REMark loose items
> > 1920    =1 TO 256 : REMark application windows
> > 1970     =REMAINDER : REMark check for pan/scroll bars
> > 1980       winum = num : x_st% = 0 : y_st% = 0
> > 1990       mpnum = MAWNUM(#0,winum,x_st%,y_st%) : REMark opcode etc
> > 2000       IF winum = 1 THEN
> > 2010         REMark app window 1
> > 2020         IF mpnum = 0 AND x_st% = 0 AND y_st% = 0 THEN
> > 2030           REMark something in app win 1 itself hit
> > 2040         ELSE
> > 2050           REMark one of the pan/scroll bars hit
> > 2060           REMark x_st% = pixel position of hit on bar
> > 2070           REMark y_st% = length of the bar
> > 2080           REMark mpnum is the operation code 0 to 4 (unused ones
> > are split/join)
> > 2090           REMark beware of special case of mpnum=0 & x_st%=0 &
> > y_st%=0 above
> > 2100           SELect ON mpnum
> > 2110             =0,8 : REMark hit/do on scroll bar
> > 2120               oy% = x_st%*ph%/y_st% : REMark SHOW must adjust oy%
> > if out of range
> > 2130             =4,12 : REMark hit/do on pan bar
> > 2140               ox% = x_st%*ph%/y_st% : REMark SHOW must adjust ox%
> > if out of range
> > 2150           END SELect
> > 2160         END IF
> >
> > In this example, ox% and oy% are the co-ordinates of the position
> > visible on the screen of the virtual page. pw% and ph% are the page
> > width and height of the virtual page.
> >
> > This is not the easiest of subjects, especially if you start using the
> > advanced options with the MCALLT extension.
> >
> > Hope this helps get you started enough to explore the possibilities
> > further.
> >
> > ------------------------------------------------------------------------
> >
> >
> > No virus found in this incoming message.
> > Checked by AVG - www.avg.com
> > Version: 8.5.339 / Virus Database: 270.12.70/2177 - Release Date:
> > 06/15/09 05:54:00
>
> _______________________________________________
> QL-Users Mailing List
> http://www.q-v-d.demon.co.uk/smsqe.htm

_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to