RbBFBlokProj KbPSIVStrn5.5OPSpStrnChainExample.rbACnmStrnAChpStrnACsvStrnlocalhost:7325Ver1Strn1Ver2Strn0Ver3Strn0RelsStrn0NnRlStrn0RegnStrn0SVerStrnLVerStrnIVerStrnDVewInt tprTpInt DLanInt CLanInt DEncInt BflgInt BCXFInt IconGrupEndGInt CPalGrupflagInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt elemInt EndGInt MacCStrn????BMacStrnMy Application (Classic)BCarStrnMy ApplicationBSizInt @BMSzInt BSzSStrn4096BMSSStrn2048MDIcStrnMy ApplicationBWinStrnMy Application.exeBMDIInt BL86Strn MyApplicationrEdtRectHfTypGrupLnameStrntextMacCStrnR*chtypeStrnTEXTdefnStrnflagInt EndGInt PadnPadn0************************************************BlokpVewt4 KbNameStrnWindow1ContInt rEdtRectr!eSptInt bPGpGrupPbPElGrup4scKyInt rEdtRectr!eSptInt EndGInt EndGInt lstHInt lstVInt |PDefGrup4nameStrnNamePValStrnWindow1EncoInt EndGInt PDefGrup(nameStrnFramePValStrn0EndGInt PDefGrup0nameStrn CompositePValStrnFalseEndGInt PDefGrup0nameStrn HasBackColorPValStrnFalseEndGInt PDefGrup0nameStrn BackColorPValStrn16777215EndGInt PDefGrup(nameStrnBackdropPValStrn0EndGInt PDefGrup8nameStrnTitlePValStrnUntitledEncoInt EndGInt PDefGrup(nameStrnVisiblePValStrnTrueEndGInt PDefGrup0nameStrn FullScreenPValStrnFalseEndGInt PDefGrup0nameStrnMenuBarVisiblePValStrnTrueEndGInt PDefGrup(nameStrnCloseBoxPValStrnTrueEndGInt PDefGrup,nameStrnGrowIconPValStrnFalseEndGInt PDefGrup0nameStrn LiveResizePValStrnFalseEndGInt PDefGrup,nameStrnZoomIconPValStrnFalseEndGInt PDefGrup(nameStrn BalloonHelpPValStrnEndGInt PDefGrup,nameStrn MacProcIDPValStrn0EndGInt PDefGrup0nameStrnMenuBarPValStrn -1096311693EndGInt PDefGrup,nameStrn PlacementPValStrn0EndGInt PDefGrup(nameStrnWidthPValStrn300EndGInt PDefGrup(nameStrnHeightPValStrn300EndGInt PDefGrup(nameStrnMinWidthPValStrn64EndGInt PDefGrup,nameStrn MinHeightPValStrn64EndGInt PDefGrup,nameStrnMaxWidthPValStrn32000EndGInt PDefGrup0nameStrn MaxHeightPValStrn32000EndGInt FDefGrupxNameStrnWindow1SizeInt SuprStrnCommandHandlingWindowbNtrInt MethGrupEncoInt nameStrn HandleCommandparmStrncmd As CommandrsltStrnBooleanflagInt sorcGrupstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn1Function HandleCommand(cmd As Command) As BooleansrclStrnselect case cmdsrclStrn case "Test"srclStrn MsgBox "Test"srclStrnsrclStrn case "Print"srclStrnMsgBox "Print"srclStrnsrclStrn case "Foo"srclStrn MsgBox "Foo"srclStrnsrclStrncase "Open Document"srclStrn4MsgBox OpenDocumentCommand( cmd ).mFile.AbsolutePathsrclStrnsrclStrnelsesrclStrn// We didn't handle itsrclStrn return falsesrclStrn end selectsrclStrnsrclStrn// We handled itsrclStrn return truesrclStrn End FunctionEndGInt EndGInt HInsGrup,EncoInt nameStrn MouseDownsorcGrupstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn9Function MouseDown(X As Integer, Y As Integer) As BooleansrclStrn=Commands.Dispatch( new OpenDocumentCommand( DesktopFolder ) )srclStrn End FunctionEndGInt EndGInt HInsGrupEncoInt nameStrnOpensorcGrupxstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn Sub Open()srclStrnsrclStrnEnd SubEndGInt EndGInt EndGInt CBhvGrup0NameStrnSizeInt SuprStrnCustomPushButton1bNtrInt HInsGrupEncoInt nameStrnActionsorcGrupstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn Sub Action()srclStrnCommands.Dispatch( "Bar" )srclStrnEnd SubEndGInt EndGInt EndGInt CBhvGrup0NameStrnSizeInt SuprStrnCustomPushButton1bNtrInt HInsGrupEncoInt nameStrnActionsorcGrupstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn Sub Action()srclStrnCommands.Dispatch( "Test" )srclStrnEnd SubEndGInt EndGInt EndGInt CBhvGrupNameStrnSizeInt tSuprStrn CustomCanvas1bNtrInt HInsGruphEncoInt nameStrn MouseDownsorcGrup(stsrInt stscInt /ndsrInt ndscInt /EncoInt srclStrn9Function MouseDown(X As Integer, Y As Integer) As BooleansrclStrnCommands.Dispatch( "Wahoo" )srclStrnsrclStrn/// So the click doesn't fall thru to the windowsrclStrn return truesrclStrn End FunctionEndGInt EndGInt HInsGrupEncoInt nameStrnPaintsorcGrupstsrInt stscInt %ndsrInt ndscInt %EncoInt srclStrnSub Paint(g As Graphics)srclStrn%g.DrawRect( 0, 0, g.Width, g.Height )srclStrnEnd SubEndGInt EndGInt EndGInt CBhvGrup@NameStrnSizeInt SuprStrn StaticTextbNtrInt EndGInt CtrlGrupcclsStrn CustomCanvas1nameStrnCanvasPDefGrup<nameStrnNamePValStrnCustomCanvas11EncoInt EndGInt PDefGrup0nameStrnIndexPValStrn -2147483648EndGInt PDefGrup0nameStrn TabPanelIndexPValStrn0EndGInt PDefGrup(nameStrnVisiblePValStrnTrueEndGInt PDefGrup$nameStrnLeftPValStrn180EndGInt PDefGrup$nameStrnTopPValStrn102EndGInt PDefGrup(nameStrnWidthPValStrn100EndGInt PDefGrup(nameStrnHeightPValStrn100EndGInt PDefGrup,nameStrn InitialParentPValStrnEndGInt PDefGrup$nameStrnHelpTagPValStrnEndGInt PDefGrup(nameStrn BalloonHelpPValStrnEndGInt PDefGrup0nameStrnDisabledBalloonHelpPValStrnEndGInt PDefGrup0nameStrnAutoDeactivatePValStrnTrueEndGInt PDefGrup,nameStrnLockLeftPValStrnFalseEndGInt PDefGrup,nameStrnLockTopPValStrnFalseEndGInt PDefGrup0nameStrn LockRightPValStrnFalseEndGInt PDefGrup0nameStrn LockBottomPValStrnFalseEndGInt PDefGrup(nameStrnBackdropPValStrn0EndGInt PDefGrup(nameStrnEnabledPValStrnTrueEndGInt PDefGrup,nameStrn UseFocusRingPValStrnTrueEndGInt PDefGrup0nameStrn AcceptFocusPValStrnFalseEndGInt PDefGrup0nameStrn AcceptTabsPValStrnFalseEndGInt CBixInt EndGInt CtrlGrup`cclsStrnCustomPushButton1nameStrn PushButtonPDefGrup@nameStrnNamePValStrnCustomPushButton11EncoInt EndGInt PDefGrup0nameStrnIndexPValStrn -2147483648EndGInt PDefGrup0nameStrn TabPanelIndexPValStrn0EndGInt PDefGrup(nameStrnVisiblePValStrnTrueEndGInt PDefGrup$nameStrnLeftPValStrn192EndGInt PDefGrup$nameStrnTopPValStrn121EndGInt PDefGrup(nameStrnWidthPValStrn69EndGInt PDefGrup(nameStrnHeightPValStrn22EndGInt PDefGrupHnameStrn InitialParentPValStrnCustomCanvas11EncoInt EndGInt PDefGrup$nameStrnHelpTagPValStrnEndGInt PDefGrup(nameStrn BalloonHelpPValStrnEndGInt PDefGrup0nameStrnDisabledBalloonHelpPValStrnEndGInt PDefGrup0nameStrnAutoDeactivatePValStrnTrueEndGInt PDefGrup,nameStrnLockLeftPValStrnFalseEndGInt PDefGrup,nameStrnLockTopPValStrnFalseEndGInt PDefGrup0nameStrn LockRightPValStrnFalseEndGInt PDefGrup0nameStrn LockBottomPValStrnFalseEndGInt PDefGrup8nameStrnTextFontPValStrnSystemEncoInt EndGInt PDefGrup(nameStrnTextSizePValStrn12EndGInt PDefGrup(nameStrnBoldPValStrnFalseEndGInt PDefGrup,nameStrnItalicPValStrnFalseEndGInt PDefGrup0nameStrn UnderlinePValStrnFalseEndGInt PDefGrup8nameStrnCaptionPValStrnUntitledEncoInt EndGInt PDefGrup, nameStrnDefaultPValStrnFalseEndGInt  PDefGrup, nameStrnCancelPValStrnFalseEndGInt  PDefGrup( nameStrnEnabledPValStrnTrueEndGInt  CBixInt EndGInt CtrlGrupD cclsStrnCustomPushButton1nameStrn PushButtonPDefGrup@ nameStrnNamePValStrnCustomPushButton12EncoInt EndGInt  PDefGrup0nameStrnIndexPValStrn -2147483648EndGInt PDefGrup0nameStrn TabPanelIndexPValStrn0EndGInt PDefGrup(nameStrnVisiblePValStrnTrueEndGInt PDefGrup$nameStrnLeftPValStrn50EndGInt PDefGrup$nameStrnTopPValStrn141EndGInt PDefGrup(nameStrnWidthPValStrn69EndGInt PDefGrup(nameStrnHeightPValStrn22EndGInt PDefGrup,nameStrn InitialParentPValStrnEndGInt PDefGrup$nameStrnHelpTagPValStrnEndGInt PDefGrup(nameStrn BalloonHelpPValStrnEndGInt PDefGrup0nameStrnDisabledBalloonHelpPValStrnEndGInt PDefGrup0nameStrnAutoDeactivatePValStrnTrueEndGInt PDefGrup,nameStrnLockLeftPValStrnFalseEndGInt PDefGrup,nameStrnLockTopPValStrnFalseEndGInt PDefGrup0nameStrn LockRightPValStrnFalseEndGInt PDefGrup0nameStrn LockBottomPValStrnFalseEndGInt PDefGrup8nameStrnTextFontPValStrnSystemEncoInt EndGInt PDefGrup(nameStrnTextSizePValStrn12EndGInt PDefGrup( nameStrnBoldPValStrnFalseEndGInt  PDefGrup,!nameStrnItalicPValStrnFalseEndGInt !PDefGrup0"nameStrn UnderlinePValStrnFalseEndGInt "PDefGrup8#nameStrnCaptionPValStrnUntitledEncoInt EndGInt #PDefGrup,$nameStrnDefaultPValStrnFalseEndGInt $PDefGrup,%nameStrnCancelPValStrnFalseEndGInt %PDefGrup(&nameStrnEnabledPValStrnTrueEndGInt &CBixInt EndGInt  CtrlGrup@'cclsStrn StaticTextnameStrn StaticTextPDefGrup8(nameStrnNamePValStrn StaticText1EncoInt EndGInt (PDefGrup0)nameStrnIndexPValStrn -2147483648EndGInt )PDefGrup0*nameStrn TabPanelIndexPValStrn0EndGInt *PDefGrup(+nameStrnVisiblePValStrnTrueEndGInt +PDefGrup$,nameStrnLeftPValStrn20EndGInt ,PDefGrup$-nameStrnTopPValStrn14EndGInt -PDefGrup(.nameStrnWidthPValStrn260EndGInt .PDefGrup(/nameStrnHeightPValStrn39EndGInt /PDefGrup,0nameStrn InitialParentPValStrnEndGInt 0PDefGrup$1nameStrnHelpTagPValStrnEndGInt 1PDefGrup(2nameStrn BalloonHelpPValStrnEndGInt 2PDefGrup03nameStrnDisabledBalloonHelpPValStrnEndGInt 3PDefGrup04nameStrnAutoDeactivatePValStrnTrueEndGInt 4PDefGrup,5nameStrnLockLeftPValStrnFalseEndGInt 5PDefGrup,6nameStrnLockTopPValStrnFalseEndGInt 6PDefGrup07nameStrn LockRightPValStrnFalseEndGInt 7PDefGrup08nameStrn LockBottomPValStrnFalseEndGInt 8PDefGrup89nameStrnTextFontPValStrnSystemEncoInt EndGInt 9PDefGrup(:nameStrnTextSizePValStrn12EndGInt :PDefGrup(;nameStrnBoldPValStrnFalseEndGInt ;PDefGrup,nameStrnTextPValStrnSClick in the window, the canvas or the buttons to cause a Command to be Dispatched.EncoInt EndGInt >PDefGrup,?nameStrn TextAlignPValStrn0EndGInt ?PDefGrup,@nameStrn TextColorPValStrn0EndGInt @PDefGrup,AnameStrn MultiLinePValStrnTrueEndGInt APDefGrup(BnameStrnEnabledPValStrnTrueEndGInt BPDefGrup(CnameStrn DataSourcePValStrnEndGInt CPDefGrup(DnameStrn DataFieldPValStrnEndGInt DCBixInt EndGInt 'PadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpMnus KbNameStrnMenuBar1ContInt rEdtRectdd,MItmGrupEspmuInt nameStrntextStrnindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt MItmGrupFspmuInt nameStrntextStrnindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt FEndGInt EMItmGrupGspmuInt nameStrnFileMenutextStrn&FileindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt MItmGrupHspmuInt nameStrnFileQuittextStrnE&xitindxInt scutStrnQbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrn QuitMenuItembNtrInt EndGInt HMItmGrupIspmuInt nameStrntextStrnindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt IEndGInt GMItmGrupJspmuInt nameStrnEditMenutextStrn&EditindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt MItmGrupKspmuInt nameStrnEditUndotextStrn&UndoindxInt scutStrnZbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt KMItmGrupLspmuInt nameStrntextStrn-indxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt LMItmGrupMspmuInt nameStrnEditCuttextStrnCu&tindxInt scutStrnXbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt MMItmGrupNspmuInt nameStrnEditCopytextStrn&CopyindxInt scutStrnCbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt NMItmGrupOspmuInt nameStrn EditPastetextStrn&PasteindxInt scutStrnVbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt OMItmGrupPspmuInt nameStrn EditCleartextStrnClearindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt PMItmGrupQspmuInt nameStrn EditSelectAlltextStrn Select &AllindxInt scutStrnAbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt QMItmGrupRspmuInt nameStrntextStrnindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt REndGInt JMItmGrupSspmuInt nameStrntextStrnindxInt scutStrnbhlpStrndhlpStrnstylInt EncoInt flagInt maEnInt NameStrnSizeInt LSuprStrnMenuItembNtrInt EndGInt SPadnPadn4************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObjr KbNameStrnAppContInt rEdtRect_K!eSptInt bPGpGrupPTbPElGrup4UscKyInt rEdtRect_K!eSptInt EndGInt UEndGInt TbClsInt NameStrnAppSizeInt 4SuprStrn ApplicationbNtrInt IntrStrnbApOInt PDefGrup0VnameStrnMenuBarPValStrn -1096311693EndGInt VPadnPadn****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj KbNameStrnCustomPushButton1ContInt rEdtRectFY"eSptInt bPGpGrupPWbPElGrup4XscKyInt rEdtRectFY"eSptInt EndGInt XEndGInt WbClsInt NameStrnCustomPushButton1SizeInt SuprStrn PushButtonbNtrInt MethGrupPYEncoInt nameStrn HandleCommandparmStrncmd As CommandrsltStrnBooleanflagInt sorcGrupZstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn1Function HandleCommand(cmd As Command) As BooleansrclStrnselect case cmdsrclStrn case "Bar"srclStrn MsgBox "Bar"srclStrnsrclStrn case "Baz"srclStrn MsgBox "Baz"srclStrnsrclStrnelsesrclStrn// We didn't handle itsrclStrn return falsesrclStrn end selectsrclStrnsrclStrn// We handled itsrclStrn return truesrclStrn End FunctionEndGInt ZEndGInt YIntrStrn CommandablePadnPadn@****************************************************************BlokpObj KbNameStrn CustomCanvas1ContInt rEdtRect0C!eSptInt bPGpGrupP[bPElGrup4\scKyInt rEdtRect0C!eSptInt EndGInt \EndGInt [bClsInt NameStrn CustomCanvas1SizeInt tSuprStrnCanvasbNtrInt MethGrup]EncoInt nameStrn HandleCommandparmStrncmd As CommandrsltStrnBooleanflagInt sorcGrup0^stsrInt stscInt ndsrInt ndscInt EncoInt srclStrn1Function HandleCommand(cmd As Command) As BooleansrclStrnselect case cmdsrclStrn case "Wahoo"srclStrnMsgBox "Wahoo"srclStrn return truesrclStrnsrclStrn end selectsrclStrnsrclStrn End FunctionEndGInt ^EndGInt ]IntrStrn CommandablePadnPadn********************************************************************************************************************************************************************************************************************************************BlokpFolPl,sNameStrnChain of ResponsibilityContInt PadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObjyl,sNameStrn CommandableContInt PrEdtRect\o!eSptInt bPGpGrupP_bPElGrup4`scKyInt rEdtRect\o!eSptInt EndGInt `EndGInt _bClsInt NameStrn CommandableSizeInt bNtrInt MethGrup$aEncoInt nameStrn HandleCommandparmStrncmd as CommandrsltStrnBooleanflagInt sorcGrupbstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn1Function HandleCommand(cmd as Command) As BooleansrclStrnsrclStrn End FunctionEndGInt bEndGInt aIntrStrnPadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObjl,sNameStrnCommandContInt PrEdtRectR"!eSptInt bPGpGrupPcbPElGrup4dscKyInt rEdtRectR"!eSptInt EndGInt dEndGInt cbClsInt NameStrnCommandSizeInt bNtrInt PropGrupeEncoInt declStrnmType as StringflagInt sorcGruptfstsrInt stscInt ndsrInt ndscInt EncoInt ntlnStrnmType as StringntlnStrnntlnStrnEndGInt fEndGInt eMethGrup`gEncoInt nameStrnOperator_CompareparmStrn rhs as StringrsltStrnIntegerflagInt sorcGruphstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn3Function Operator_Compare(rhs as String) As IntegersrclStrnif rhs = mType then return 0srclStrnsrclStrnreturn 1srclStrn End FunctionEndGInt hEndGInt gMethGrupiEncoInt nameStrnOperator_ConvertparmStrn rhs as StringrsltStrnflagInt sorcGrupjstsrInt stscInt ndsrInt ndscInt EncoInt srclStrn#Sub Operator_Convert(rhs as String)srclStrn mType = rhssrclStrnEnd SubEndGInt jEndGInt iIntrStrnPadnPadnd****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj7l,sNameStrnCommandsContInt PrEdtRect!eSptInt bPGpGrupPkbPElGrup4lscKyInt rEdtRect!eSptInt EndGInt lEndGInt kbClsInt NameStrnCommandsSizeInt bNtrInt PropGrupmEncoInt declStrnmLastCommandHandled as BooleanflagInt !sorcGrupnstsrInt stscInt ndsrInt ndscInt EncoInt ntlnStrnmLastCommandHandled as BooleanntlnStrnntlnStrnEndGInt nEndGInt mMethGrupDoEncoInt nameStrnDispatchparmStrntype as StringrsltStrnflagInt sorcGruppstsrInt stscInt ndsrInt ndscInt EncoInt srclStrnSub Dispatch(type as String)srclStrndim cmd as new CommandsrclStrn cmd = typesrclStrnDispatch( cmd )srclStrnEnd SubEndGInt pEndGInt oMethGrupHqEncoInt nameStrnDispatchparmStrncmd as CommandrsltStrnflagInt sorcGruprstsrInt $stscInt ndsrInt $ndscInt EncoInt srclStrnSub Dispatch(cmd as Command)srclStrn"// Reset our command handling flagsrclStrnmLastCommandHandled = falsesrclStrnsrclStrn0// We want to loop over everything in the systemsrclStrn.// and give it a chance to handle the command.srclStrnsrclStrn,// Loop over every window and give it a shotsrclStrndim i, count as IntegersrclStrndim j, childCount as IntegersrclStrndim wnd as WindowsrclStrnsrclStrncount = WindowCountsrclStrnfor i = 0 to count - 1srclStrn/// If the window itself is commandable, then wesrclStrn // need to fire it on the windowsrclStrnwnd = Window( i )srclStrnsrclStrn7// First loop over all the child controls of the windowsrclStrn(// and make sure they get their shot toosrclStrnchildCount = wnd.ControlCountsrclStrnfor j = 0 to childCount - 1srclStrn(if wnd.Control( j ) IsA Commandable thensrclStrn