RTP Series - RTP49
VERBatim - V18
QTIPS - Amending non-Attached Files
Set_Attach_Sub and Attach images
Window or Not ?
Vroom - Window Processing
QTIPS - Window Symbol Tables
VROOM - Window Processing II
@ATTACK - @HW
Uncommon Knowledge - WC_Reset%
Reader's Clinic - Related Windows
Window or Not?
Reader's Clinic - Scribe Replace Processes in Window
Soft Windows
QTIPS - Window Bug and Debugging Window Bug
Overlapping Windows And Window Menus
QTIPS - New Catalyst Option
QTIPS - Collectors on the fly
QTIPS - Blank Menus in Windows
QTIPS - Moving Objects the EASY way.
VERBatim - V16
Uncommon Knowledge - WC_Crt_VX%
Uncommon Knowledge - WC_Crt_VY%
Play it Again, Cam
Uncommon Knowledge - WC_Vdx%
Uncommon Knowledge - WC_Vdy%
Uncommon Knowledge - WC_VHead%
Uncommon Knowledge - WC_Virtual%
Uncommon Knowledge - WC_Virtual_On%
Uncommon Knowledge - WC_Vprev%
Uncommon Knowledge - WC_Vsp_VDepth%
Uncommon Knowledge - WC_Vsp_Vlen%
Uncommon Knowledge - WC_Vsp_Vx%
Uncommon Knowledge - WC_Vsp_Vy%
Uncommon Knowledge - WC_VWindow%
Uncommon Knowledge - WC_Table_Width%
Reader's Clinic - Dynamic Screen Display
VERBatim - V65
QTIPS - Securing Menus
QTIPS - Invalid Code and Command
Uncommon Knowledge - WC_Soft_Keys%
Utility Diskette # 4
Uncommon Knowledge - Window_Common% in Paint - Part I
RevTi Just Wanna Have Fun
Uncommon Knowledge - Window_Common% in Paint - Part III
SecureUser
VERBatim - V86
Advanced Revelation Initialisation Sequence (Overview) by Mike Pope
Overlapping Windows And Window Menus
QTIPS - Modifying EasyWriter To Display Field Descriptions
Reader's Clinic - Screen Width
Screen Grabber
Reader's Clinic - Slow Multivalued Screen Display
Utility Diskette # 4
Collector Windows
QTIPS - Reusing Symbolics in Windows
QTIPS - Use of Mouse
Advanced Revelation Assembler Interface Module - Yves Pattyn, Technical Manager, Distribase, France
Version 3 Technical Highlights - Input.Char
QTIPS - Moving Objects the EASY way.
Merge Processor
Form.List.S
Make.Index
Index Sub Revisited
QTIPS - Make.Index 2.11+
QUERY.SUB
Version 3 Technical Highlights - Creating New Accounts Programmatically
Version 3 TCL Subroutines - Creating New Accounts
Version 3 TCL Subroutines - Creating Tables
RTP Series - RTP42
VERBatim - V65
Argument passing - Subroutines and Functions - Mike Pope
Referential Integrity
VERBatim - V126
Esc.To.Exit
Uncommon Knowledge - WC_WST_CHAR%
Reader's Clinic - Fixing %Windows% Using Depend.Update
QTIPS - Updating Indexes
How Indexes Are Updated
REVMEDIA Revisted
Reader's Clinic - Preventing Records Being Amended
QTIPS - Finding/Replacing Spaces With The Editor
Reader's Clinic - Scribe Replace Processes in Window
Creating Your Own Background Processes
@ATTACK - @Last.Select.Process
Reader's Forum
QTIPS - Menu Item Pre-Processing
@ATTACK - @Query.Depth
Playing with Scan Codes
QTIPS - Compiling Protection Code
QTIPS - Invalid Code and Command
QTIPS - Code/Command Help
Compiling 64K on a Shoestring by Blaise Wrenn (LexStat Systems Ltd)
@ATTACK - @Reduction.Done
Viewer
VERBatim - V65
QTIPS - Using INIT.VIEW with Printers
REVMEDIA Revisited
QTIPS - Sub-Headings in RLIST (Revisited)
Reader's Clinic - Template Name at Pre-Init
Video Control
RTP Series - RTP27
QTIPS - Printing Large Variables from the Debugger
VERBatim - V87
QTIPS - Equidistant Menu Options
QTIPS - Improved Menu Help 1
QTIPS - Improved Menu Help 2
QTIPS - Securing Menus
QTIPS - Overriding Menu Colours
Utility Diskette # 3 - Part I
Menus and Menu Drivers
QTIPS - Menus Without an Action Bar
QTIPS - Comment Lines In Pulldown Menus
Overlapping Windows And Window Menus
QTIPS - Blank Menus in Windows
QTIPS - Menu Item Pre-Processing
Caching in on the Frames Array - Mike Pope
What's New (and un(der)documented!) In 2.12
Utility Diskette # 4
QTIPS - Winus
QTIPS - Calling an Action Bar from a Pulldown Menu
DOS Interfacing (Part II)
Reader's Clinic - Preventing Records Being Amended
How Indexes Are Updated
A RevTechie Replies - And Miscellaneous Jottings - Mike Pope - Revelation Technologies (UK) Ltd
Caching in on the Frames Array - Mike Pope
@ATTACK - @Record
@ATTACK - @Reduction.Done
Collector Windows
Soft Windows
Reader's Clinic - Template Name at Pre-Init
Reader's Clinic - Functions and Subroutines
Argument passing - Subroutines and Functions - Mike Pope
QTIPS - Break-On Date Fields
IConvs / OConvs

RevMedia FKB

DocumentV4I10A11
TitleOverlapping Windows And Window Menus
KeywordsWINDOW
MENU
OVERLAY
TextWITH the new functionality in 3 x of being able to attach a CUA compliant
menu to each window individually a whole new world opened up for lovers of
overlapping windows! For those unaccustomed to such delights imagine having
a very large window elements of which are only used occasionally Thanks to
the kindly auspices of VSPACE one could just paint everything onto the one
window and allow the user to pan to the bits they required This works but
has the major disadvantage that ALL of the window is calculated before it is
displayed which makes window refresh that much slower

A better way is to overlay onto the main screen smaller subsets of the main
data record in small windows These overlays can be called FROM the window
menu by a simple click WITH the mouse

There are a number of PROBLEMS ASSOCIATED WITH this technique but the
largest is convincing the window processor that the record it is trying to
call up in the smaller window (which has of course the same id as the
record displayed in the main window) is not locked The steps in achieving
this can best be described as

Make the sub windows non locking

Pass the record back and forwards in LABELLED common ensuring that the
integrity of data at DIFFERENT window levels is maintained

Update the LABELLED common areas WITH replace read/write processes

Remember of course that the same technique might be used in multiple
overlapping windows so some way of keeping individual records separate must
be incorporated Rather than explain the process in depth the code below
shows just how this would be done Note that the code is only installed in a
Post Init hook on the window and FROM thereon in it installs itself

From within the commuter program called by the menu the LABELLED common
area would be loaded WITH the CURRENT record for the replace read process to
pick up the sub window would be called and on return @Record would be
updated FROM the LABELLED common area maintained by the replace write
process on the sub window i e (assuming that the LABELLED common area
containing Record@ was declared earlier)

Description:
Record@(@Window Level) = @Record
Catalyst("W" "SKU_DESCRIPTION " : @Id)
@Record = Record@(@Window Level)
Return


Subroutine Overlay_Window(Branch)
/*
Author AMcA
Date 10th April 1993
Purpose Generic plug in for overlay windows
Notes The LABELLED common area Overlay is used to pass the record
between SCREENS It has been dimensioned to 20 to permit up to
20 overlapped levels of window
*/

$INSERT SysInclude Window_Common%
Common /OVERLAY/ Record@(20)
Declare Subroutine Msg

Brnchs = "POST_INIT REP_DEL REP_QUERY REP_READ "
Brnchs:= "REP_REFRESH REP_WRITE"
LOCATE Branch in Brnchs USING ' ' SETTING POS then
On Pos GoSub POST_INIT REP_DEL REP_QUERY REP_READ REP_REFRESH REP_WRITE
End Else
Msg('Invalid Branch of %1%|Passed to %2%' '' '' BRANCH:@FM:WC_TEMPLATE%)
End
Return

Post_Init:
/*
INSTALL the rep read/write/delete/refresh automatically Note that for
complete safety the program ought to check for pre existing or
duplicated processes so as not to overwrite them
*/
Wc_Reproc%<3> = "S":@Vm:OVERLAY_WINDOW REP_READ"
Wc_Reproc%<4> = "S":@Vm:"OVERLAY_WINDOW REP_WRITE"
Wc_Reproc%<5> = "S":@Vm:"OVERLAY_WINDOW REP_DEL"
Wc_Reproc%<6> = "S":@Vm:"OVERLAY_WINDOW REP_QUERY"
Wc_Reproc%<7> = "S":@Vm:"OVERLAY_WINDOW REP_REFRESH"
Return

Rep_Del:
/*
Remove those fields FROM the record that are contained in the current
screen PAGE This is because a DELETE in a subwindow ought not to delete
the main record rather just that data in the subwindow

Note do not attempt to remove key elements as they will be FIELD 0 and
therefore delete the record in its entirety The same obtains for
symbolics
*/


For X = 2 To WC_W_Cnt%
If WC_W%(X)<4> > 0 Then
@Record4>> = ""
End
Next
Record@(@Window LEVEL 1) = @Record
/*
Now close the window and return to the CALLING program
*/
WC_RESET% = 6
Return

Rep_Query:
/*
Do whatever you want to here
*/
Return

Rep_Read:
/*
As the LABELLED common area was loaded at the previous window level
grab @Record FROM the ARRAY element one lower than the CURRENT window
level
*/
@Record = Record@(@Window Level 1)
WC_OREC% = @Record
Return

Rep_Refresh:
/*
Quit the screen
*/
WC_Reset% = 6
Return

Rep_Write:
Record@(@Window Level 1) = @Record
WC_Reset% = 6
Return


(Volume 4 Issue 10 Pages 11 13)
[revmedia/copyrigh.htm]

Page last modified: 08/02/03