Hello hakan!

Thank you for your reply.

> I don?t knpw if this helps..

Let's have a look :)

> I have used in an ooDialog program
>
>
> ::method InitDialog
>
>   self~myHelpAbout
>
>
> ::Method myHelpAbout
>
>   self~connectMenuItem(IDM_HELP,Help)
>   self~ConnectHelp(help)                      -- connect to F1 (Windows Help)
>   self~ConnectMenuItem(IDM_ABOUT,About)
> [...]

Well, what you suggest is a nice work around. May be I was not 
clear enough, my qestion was about MessageDialog()
i) did I misunderstand the documentation, or
ii) is there a docomentation error, or
iii) is it realy broken?

As such I append here a test routine what is an ~160 lines excerpt 
of a program with now about 3000 lines of code. I hope it gets not 
messed up by line wrap (make-up? Zeilenumbruch). Just start it and 
select About... in the system menu or in the context menu. As 
"detailed help" just write a file named helptest.txt with 'This is 
the Help for HelpTest.REXX' or similar as content, just as an 
example. What I list in the comments as 'glitches' are just some 
additonal oddities.

Thanks in advance for your time.....Mike

> /**HelpTest.REXX: Test to make the Help button in a About window act as 
> desired */
> -- Error: The About dialog shows a Help button but I can't get it work
> -- =====  (This problem is the first reason for this test.)
> -- Glitches: i) 'a' is defined in main window (instead of F13) to show the 
> About
> -- ========     dialog. 'a' is also defined in the menu to show About. 'm-h-a'
> --              may show two About windows, alas not 100% reproducible.
> --          ii) Requests to show the menu seem to be stacked: Right mouse 
> click
> --              and an 'm' followed by ESC still shows the menu. 'm-m-m' needs
> --              three ESC to get rid of the menu. 'm-m-h-i' still shows the 
> menu.
> --         iii) External applications are not modal. 'm-h-i' shows a txt file
> --              as help. Without closing this dissplay you may switch back to 
> REXX
> --              and quit. Alas only the REXX window disappears but REXX is 
> active
> --              until the txt file display is closed. Same with html. How to
> --              detach an external application?
> -- Documentation error: ooDialog Reference 4.2.3, Jan. 2014, p. 1549, 2nd 
> phrase
> --    states 'If the message box does not have a Cancel button, then the user 
> can not
> --    close the message box by using the ESC key.' This holds true for pb 
> keywords
> --    ABORTRETRYIGNORE and YESNO, OK or omission of the pb argument enables 
> ESC to
> --    close the message box, but returns IDOK in place of IDCANCEL.
>    trace 'N'
>    address command
>    parse upper arg .
>    signal on halt; signal on error
>
> /* show version of ooREXX and ooDialog */
> parse source . . fid; parse version . "-" vers . reldat
> say 'Running' fid 'using' vers reldat
> say 'and' .DlgUtil~version
>
> /* Part 0 - set some GLOBALVars */
> .constDir[CSM_ABOUT] = 336
> .constDir[CSM_SEPAR] = 309
> .constDir[GLV_FID] = fid
>
> /* Part 1 - the ooREXX main program: 2 statements to display a window  */
> picture = .PLT~new                  -- create an instance "picture" of PLT
> if picture~initCode = 0 then do
>   picture~execute("", 105)          -- connectPosChanged() is triggered first
> end
>
> /* Part 2 -  Define which library to use for this program */
> ::requires "ooDialog.cls"           -- I am still not sure?
>
> /* Part 3 - Define the PLT class for... yes - for what?? */
> ::class 'PLT' subclass UserDialog   -- I must re-read the manual about this
>
> /* Part 4 - INIT: what makes up the new object */
> ::method init unguarded             -- auto-invoked when an instance is 
> created.
> expose ppm ppsm
> say '>>> Init'
>   forward class (super) continue    -- I must re-read the manual about this.
> /* Next statement needs DU */
>   self~initCode = \ self~create(18, 29, 99, 99,,      /* resize later */
>       'Help test' , "MINIMIZEBOX")
> /* Define a menu shown with right mouse click, shift F10, or Menu key */
>   ppm = .PopupMenu~new(350)
>   --  insertitem(IDb, ID, designation, state, type, byPos, connect, mName)
>   ppm~insertItem(355, 355, "&Quit")
>   ppm~insertSeparator(356, 356)
>       pphm = .PopupMenu~new(390)
>       pphm~insertItem(391, 391, "&About...")
>       pphm~insertItem(392, 392, "&In datail...")
>   ppm~insertPopup(357, 357, pphm, "&Help")
>
> self~connectHelp(Help)        -- Help will call help() ... "You pressed F1"
> say 'Init >>>'
>
> /* Part 5 - defineDialog: all elements and 'event-listener' of this dialog */
> ::method defineDialog unguarded           -- invoked at some time.
> say '>>> defineDialog'
> /* button surface will serve as canvas (resize later) */
>   self~createPushButton(666, 2, 2, 88, 88, "OWNER NOTAB NOTIFY")
>   self~setControlColor(666, 10)
>   self~connectButtonEvent(666, 'DBLCLK', 'whatsabout')
> say 'defineDialog >>>'
>
> /* Part 6 - initDialog: what needs to be set when the dialog is shown the 
> first time */
> ::method initDialog unguarded
>   expose ppm ppsm
> say '>>> initDialog'
>   /* Modify the system menu, ooDialog Reference Version 4.2.0, pp 1155 f */
>   -- Get the system menu.
>   sysMenu = .SystemMenu~new(self)
>   -- Modify the system menu
>   sysMenu~insertSeparator(CSM_SEPAR, CSM_SEPAR)
>   sysMenu~insertItem(CSM_ABOUT, CSM_ABOUT, "&About")
>   sysMenu~connectCommandEvent(CSM_ABOUT, 'whatsabout')
> -- Make right mouse click on canvas only execute RMC()
>   if \ .PopupMenu~connectContextMenu(self, "rmc", self~getControlHandle(666)) 
> then do
>     say 'Error conecting context menu. SystemErrorCode:' || -
>     .SystemErrorCode SysGetErrortext(.SystemErrorCode)
>   end
> -- Make all menu items call MIS()
>   if \ ppm~connectAllCommandEvents("mis", self) then do
>     say 'Error conecting menu items. SystemErrorCode:' || -
>     .SystemErrorCode SysGetErrortext(.SystemErrorCode)
>   end
> -- make some keys act
>   self~connectKeyPress('RMC', .VK~M ',' .VK~DIVIDE ',' .VK~F10, "NONE")
>   self~connectKeyPress('MKP', .VK~MENU)      /* Alt-key on its own */
>   self~connectKeyPress('whatsabout', .VK~A, "NONE")   /* instead of F13 */
> say 'initDialog >>>'
>
> /* Part 7 contains routines acting on messages */
>
> /* MKP: Menu Key Pressed (the Alt key on its own) */
> ::method MKP unguarded
> self~rmc('dc', 0, 0)    /* dc = don't care */
>
> /* Menu Item Selected: all menu items are conected to MIS() */
> ::method MIS unguarded
>
> use arg mniID
> select
>   when mniID = 355 then return self~ok       -- 'Menu Quit'
>   when mniID = 391 then self~whatsabout      -- 'Menu Help/About...'
>   when mniID = 392 then self~help            -- 'Menu Help/In datail...'
>   otherwise say 'Programming error in method MIS()'
> end
>
> /* RMC: Right Mouse Click on canvas */
> ::method rmc unguarded
>   expose ppm pos
> use arg hwnd, x, y
> /* x = -1 and y = -1 indicate Shift-F10 or Context Menu key hit */
> /* x = 0 and y = 0 indicate purposeful misuse by connectKeyPress() */
> if x + y <= 0 then do
>   dlgR = self~windowRect
>   x = dlgR~left + 75                   -- missing: offset = f(menu size)
>   y = dlgR~top + .SM~cyCaption + 58
> end
> pos = .Point~new(x, y)
> ret = ppm~show(pos, self)
>   if ret == -1 then do
>     say 'Display popup menu failed SystemErrorCode:' || -
>     .SystemErrorCode SysGetErrortext(.SystemErrorCode)
>   end
>
> /* whatsitallabout: the about window */
> ::method whatsabout unguarded
>
> dh = self~getControlHandle(666)   -- this is the "canvas", rm click only here
> dh = self~dlgHandle
> say 'Dialog handle:' dh
>
> exit MessageDialog('"HelpTest" is a test of the About dialog Help button.' 
> .endOfLine,
>                    "I'd like it shows the help file as F1 does in main 
> window.", dh,,
>                    "About HelpTest", , , 'HELP TOPMOST')
> /* missing: make this darned HELP button act */
>
> /* show a txt file with some help */
> ::method help unguarded
> say 'You pressed F1?'
> -- assume TXT files are linked with an editor or viewer on all users' PCs w/o 
> exception
> -- could be HTML in some future, but Win32pad starts much faster
> fid = .constDir[GLV_FID]
> "" left(fid, lastpos('.', fid)) || 'txt'
> return 0

--------------------------------------------
Kostenlose E-Mail-Adresse mit unbegrenztem Speicherplatz für E-Mails, Free SMS 
und OK-Drive, der Online-Festplatte.
Sicher Dir jetzt Deine Wunschadresse @ OK.de: www.ok.de

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-users mailing list
Oorexx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-users

Reply via email to