User Tools

Site Tools


toolbarreltreeclass_overview.htm
Navigation:  ABC Library Reference > ToolbarReltreeClass >====== ToolbarReltreeClass Overview C6H0009.jpg ====== Previous pageReturn to chapter overviewNext page

The ToolbarReltreeClass is a ToolbarTarget that handles events for a RelationTree control LIST. See Control Templates--RelationTree for more information.

ToolbarReltreeClass Concepts

ToolbarReltreeClass objects implement the event handling specific to a RelationTree control LIST. The LIST specific events are primarily scrolling events, but may include other events. There may be zero or several ToolbarTarget objects within a procedure; however, only one is active at a time.

ToolbarReltreeClass Relationship to Other Application Builder Classes

The ToolbarReltreeClass is derived from the ToolbarTarget class.

The ToolbarClass keeps a list of ToolbarTarget objects (including ToolbarReltreeClass objects) so it can forward events and method calls to a particular target.

ToolbarReltreeClass ABC Template Implementation

The RelationTree control template derives a ToolbarReltreeClass object called REL#::Toolbar, where # is the RelationTree template's instance number. The template generates code to register the REL#::Toolbar object with the Toolbar object for the procedure that contains the RelationTree control template. Finally, the template generates the REL#::Toolbar.TakeEvent method to convert toolbar events into actions specific to the RelationTree LIST control.

Toolbar ToolbarReltreeClass Source Files

The ToolbarReltreeClass source code is installed by default to the Clarion \LIBSRC folder. The source code and its respective components are in:

ABTOOLBA.INC ToolbarReltreeClass declarations
ABTOOLBA.CLW ToolbarReltreeClass method definitions

ToolbarReltreeClass Conceptual Example

The following example shows a typical sequence of statements to declare, instantiate, initialize, use, and terminate a ToolbarClass object and a related ToolbarReltreeClass (ToolbarTarget) object.

This example uses a global toolbar to drive a template generated RelTree control. The program POSTs toolbar events to the active MDI window using the SYSTEM{Prop:Active} property. Then the ToolbarClass object calls on the active ToolbarReltreeClass object to handle the (scrolling) events.

PROGRAM

_ABCDllMode_  EQUATE(0)

_ABCLinkMode_ EQUATE(1)

INCLUDE('ABERROR.INC')

INCLUDE('ABFILE.INC')

INCLUDE('ABWINDOW.INC')

INCLUDE('ABTOOLBA.INC')

INCLUDE('KEYCODES.CLW')

MAP

Main      PROCEDURE

OrderTree   PROCEDURE

END

GlobalErrors  ErrorClass

Access:Customer CLASS(FileManager)

Init         PROCEDURE

               END

Relate:Customer CLASS(RelationManager)

Init         PROCEDURE

Kill         PROCEDURE,VIRTUAL

               END

Access:Orders  CLASS(FileManager)

Init        PROCEDURE

              END

Relate:Orders  CLASS(RelationManager)

Init        PROCEDURE

Kill        PROCEDURE,VIRTUAL

              END

GlobalRequest  BYTE(0),THREAD

GlobalResponse BYTE(0),THREAD

VCRRequest     LONG(0),THREAD

Customer    FILE,DRIVER('TOPSPEED'),PRE(CUS),CREATE,BINDABLE,THREAD

KeyCustNumber KEY(CUS:CustNumber),NOCASE,OPT

KeyCompany    KEY(CUS:Company),DUP,NOCASE

Record        RECORD,PRE()

CustNumber     LONG

Company        STRING(20)

ZipCode        LONG

             END

           END

Orders     FILE,DRIVER('TOPSPEED'),PRE(ORD),CREATE,BINDABLE,THREAD

KeyOrderNumber  KEY(ORD:OrderNumber),NOCASE,OPT,PRIMARY

KeyCustNumber   KEY(ORD:CustNumber),DUP,NOCASE,OPT

Record        RECORD,PRE()

CustNumber     LONG

OrderNumber    SHORT

InvoiceAmount  DECIMAL(7,2)

             END

           END

CODE

GlobalErrors.Init

Relate:Customer.Init

Relate:Orders.Init

Main                      !run Application Frame w/ toolbar

Relate:Customer.Kill

Relate:Orders.Kill

GlobalErrors.Kill

Main PROCEDURE                  !Application Frame w/ toolbar

Frame APPLICATION('Application'),AT(,,310,210),SYSTEM,MAX,RESIZE,IMM

   MENUBAR

    ITEM('Orders'),USE(?OrderTree)

   END

   TOOLBAR,AT(0,0,,20)            !must use toolbar EQUATEs

  BUTTON,AT(4,4),USE(?Toolbar:Top,Toolbar:Top),DISABLE,ICON('VCRFIRST.ICO')

  BUTTON,AT(16,4),USE(?Toolbar:PageUp,Toolbar:PageUp),DISABLE,ICON('VCRPRIOR.ICO')

  BUTTON,AT(28,4),USE(?Toolbar:Up,Toolbar:Up),DISABLE,ICON('VCRUP.ICO')

  BUTTON,AT(40,4),USE(?Toolbar:Down,Toolbar:Down),DISABLE,ICON('VCRDOWN.ICO')

  BUTTON,AT(52,4),USE(?Toolbar:PageDown,Toolbar:PageDown),DISABLE,ICON('VCRNEXT.ICO')

  BUTTON,AT(64,4),USE(?Toolbar:Bottom,Toolbar:Bottom),DISABLE,ICON('VCRLAST.ICO')

   END

  END

ThisWindow CLASS(WindowManager)

Init         PROCEDURE(),BYTE,PROC,VIRTUAL

TakeAccepted PROCEDURE(),BYTE,PROC,VIRTUAL

          END

CODE

ThisWindow.Run()

ThisWindow.Init PROCEDURE()

ReturnValue    BYTE,AUTO

CODE

ReturnValue = PARENT.Init()

SELF.FirstField = 1

OPEN(Frame)

SELF.Opened=True

RETURN ReturnValue

ThisWindow.TakeAccepted PROCEDURE()

CODE

CASE ACCEPTED()

OF Toolbar:First TO Toolbar:Last         !post toolbar event to active thread

 POST(EVENT:Accepted,ACCEPTED(),SYSTEM{Prop:Active})

 RETURN Level:Notify

OF ?OrderTree

 START(OrderTree,25000)                  !start OrderTree procedure/thread

END

RETURN PARENT.TakeAccepted()

OrderTree       PROCEDURE                 !template generated Window procedure

                                         ! with RelTree control template

DisplayString  STRING(255)

Toolbar        ToolbarClass               !declare Toolbar object

REL1::Toolbar  CLASS(ToolbarReltreeClass) !derive REL1::Toolbar object (target)

TakeEvent       PROCEDURE(<;*LONG VCR>,WindowManager WM),VIRTUAL

              END

!template generated RelTree QUEUEs and vaiables

window WINDOW('Browse Orders'),AT(,,115,110),SYSTEM,GRAY,DOUBLE,MDI

    LIST,AT(5,4,106,100),USE(?RelTree),FORMAT('800LT@s200@'),FROM(Queue:RelTree)

      END

ThisWindow  CLASS(WindowManager)        !derive ThisWindow object

Init           PROCEDURE(),BYTE,PROC,VIRTUAL

Kill           PROCEDURE(),BYTE,PROC,VIRTUAL

TakeFieldEvent PROCEDURE(),BYTE,PROC,VIRTUAL

           END

 CODE

 GlobalResponse = ThisWindow.Run()

!template generated RelTree ROUTINEs

ThisWindow.Init PROCEDURE()

ReturnValue  BYTE,AUTO

 CODE

 ReturnValue = PARENT.Init()

 SELF.FirstField = ?RelTree

 SELF.VCRRequest &amp;= VCRRequest

 SELF.Errors &amp;= GlobalErrors

 SELF.AddItem(Toolbar)                      !register Toolbar with ThisWindow

 Relate:Customer.Open

 DO REL1::ContractAll

 OPEN(window)

 SELF.Opened=True

 Toolbar.AddTarget(REL1::Toolbar,?RelTree)  !make REL1::Toolbar a toolbar target

 Toolbar.SetTarget(?RelTree)                !make REL1::Toolbar the active target

?RelTree{Prop:Selected} = 1

SELF.SetAlerts()

RETURN ReturnValue

REL1::Toolbar.TakeEvent PROCEDURE(<;*LONG VCR>,WindowManager WM)

CODE                      !convert toolbar events to

 CASE ACCEPTED()          ! Reltree-specific actions

 OF Toolbar:Bottom TO Toolbar:Up

   SELF.Control{PROPLIST:MouseDownRow} = CHOICE(SELF.Control)

   EXECUTE(ACCEPTED()-Toolbar:Bottom+1)

     DO REL1::NextParent             !on Toolbar:Bottom

     DO REL1::PreviousParent         !on Toolbar:Top

     DO REL1::NextLevel              !on Toolbar:PageDown

     DO REL1::PreviousLevel          !on Toolbar:PageUp

     DO REL1::NextRecord             !on Toolbar:Down

     DO REL1::PreviousRecord         !on Toolbar:Up

   END

 END

toolbarreltreeclass_overview.htm.txt · Last modified: 2021/04/15 15:57 by 127.0.0.1