Of course, the next step is to wrap some code around your form and turn it into a stored procedure so you can call it from anywhere, substituting messages / button text, etc., as appropriate.
Emmitt Dove Manager, Converting Applications Development Evergreen Packaging, Inc. [email protected] (203) 214-5683 m (203) 643-8022 o (203) 643-8086 f [email protected] -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Doug Hamilton Sent: Monday, March 16, 2009 5:43 PM To: RBASE-L Mailing List Subject: [RBASE-L] - RE: 3 Button Pause/Dialog? Thanks Mike. I tried your code and it worked (that was enough to make my day!) Then I realized I wanted the Cancel to be the default. I went to the MSDN site, found the parameter & tried for a while to figure it out. Then I thought hints & colors would be a good idea and so I created a generic 3 button R:Base form, YesNoCancel, as Emmitt, Larry & Javier suggested so I could get it "just so". I predefine hints, captions and message and apply them in an AfterStart EEP; they can changed to suit the specific need. Each button on the form sets the appropriate vYNCResponse value. SET VAR + vYNCCancelHint TEXT = ('Return to editing.'), + vYNCCaption text = ('Finished Edtiting'), + vYNCMsg TEXT = ('Do you want to exit and update?'), + vYNCNoHint TEXT = ('Discard all changes and exit.'), + vYNCResponse TEXT = NULL, + vYNCYesHint TEXT = ('Process the data and exit.') EDIT USING YesNoCancel CLEAR VAR vYNCCancelHint,vYNCCaption,vYNCNoHint,vYNCYesHint,vYNCMsg IF vYNCResponse = ('Cancel') THEN RETURN ENDIF IF vYNCResponse = ('No') THEN CLOSEWINDOW RETURN ENDIF IF vYNCResponse = ('Yes') THEN CLOSEWINDOW RETURN [process in calling form] ENDIF Thanks to all Doug MikeB wrote: > Doug, > > How about using the wonderful Windows MessageBox? Here's how: > NOTE: You have to supply a HANDLE for the Message box. If you do not > supply a handle, it will become modeless and can be buried behind the > users view.. HANDLE is an undocumented value that is accessible with > the GETPROPERTY CompID HANDLE 'vHandleText' command. You need to > convert the text to INTEGER before passing it to the function. > > The example shown here does NOT have an icon, but by changing the UINT > value, you can include the standard Windows Icons for the Message box. > You VB/VBA users will recognize the structure of the MessageBox as the > underlying control used by those languages. > > In your forms OnBefore: > { The declaration arguments are: > 1 is an UINT (use RBase Integer) for the type of message box, > 2 is the Caption of the message box, > 3 is the Message to be displayed, > 4 is the handle of the owner window (the current form or control} > } > > IF (chkfunc('MessageBoxA')) = 0 THEN > STDCALL function 'MessageBoxA' alias 'MessageBox' + > (integer, ptr text (128), ptr text, integer ) : integer > ENDIF > > In your controls EEP: > {Get the HANDLE of the owner window (form or control)} > SET VAR vthiswndtxt TEXT = NULL > GETPROPERTY RBASE_FORM HANDLE 'vThisWndtxt' > SET VAR vcallerhwnd = (INT(.vthiswndtxt)) > > SET VAR mb_yesnocancel = 3 > SET VAR vretval INTEGER = 0 > SET VAR vcaption TEXT = 'This is the Caption' > > SET VAR vmsg TEXT = ('This is the Message first Line' + + > (CHAR(13)) + (CHAR(10)) + + > 'Select Yes, No, or Cancel') > > > -- Type Caption Message OwnerWnd > -- function 'MessageBox' (integer, text (128), text, integer ) : integer > > SET VAR vretval = (dlcall('user32.dll', 'MessageBoxA', mb_yesnocancel, > vcaption, vmsg, vcallerhwnd)) > > SWITCH (.vretval) > CASE 6 > PAUSE 2 USING 'You Selected YES ' > BREAK > CASE 7 > PAUSE 2 USING 'You Selected NO ' > BREAK > CASE 2 > PAUSE 2 USING 'You Selected CANCEL ' > BREAK > DEFAULT > PAUSE 2 USING 'You Selected CANCEL ' > BREAK > ENDSW > > > RECALC VARIABLES > > > { All of the constant values to make up the various incarnations of > the MessageBox can be found at Microsoft's MSDN Library, this URL: > <:http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx> > > > } > > > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of Doug > Hamilton > Sent: Monday, March 16, 2009 11:40 AM > To: RBASE-L Mailing List > Subject: [RBASE-L] - 3 Button Pause/Dialog? > > Can Pause or Dialog boxes have three buttons? > Or should I build a quick mini-form w/ 3 buttons? > > Situation: > User clicks exit button on a form after editing. > Pause/Dialog/whatever, pops up for confirmation: > ___ > Do you want to update the data? > Yes No Cancel > > Yes - updates & exits > No - Exits without updating > Cancel - returns to the form for more editing > > I could have two separate buttons on the form (Yes & No, Cancel is > unneeded), but you know user will click "Yes" which will instantaneously > illicit a "D'OH!". Confirmation-after-click is much preferred. > > Or, ('cause it's Monday), what obvious solution am I not seeing? > TIA > Doug > > >

