Art,

Here's your example, edited so that it works the way you want, I think.

/*   */
parentDlg = .SimpleParentDlg~new
msgObj = parentDlg~Execute("SHOWTOP",IDI_DLG_OOREXX)

::requires 'ooDialog.cls'

::class "ExampleChildDlg" subclass userDialog

::Method init
  expose didCancel

  forward class (super) continue

  self~create(60, 70, 257, 123, "Example - I am the Child Dialog")
  self~createPushButton(IDOK, 142, 99, 50, 14, "DEFAULT", "OK")
  self~createPushButton(IDCANCEL, 197, 99, 50, 14, , "CANCEL")

  didCancel = .false

::method initDialog
  self~start(loopingTask)
  return

::method loopingTask unguarded
  expose didCancel

  do i=1 to 20
    Say "Child loop" i
    if didCancel then leave
    j = msSleep(1000)
    end

::method ok  unguarded
  expose didCancel

  didCancel = .true
  self~ok:super

::method cancel  unguarded
  expose didCancel

  didCancel = .true
  self~cancel:super


::class "SimpleParentDlg" subclass UserDialog

::method init
  forward class (super) continue

  self~create(30, 30, 257, 123, "Simple Parent Dialog", "CENTER")
  self~createPushButton(IDOK, 142, 99, 50, 14, "DEFAULT", "OK")
  self~createPushButton(IDCANCEL, 197, 99, 50, 14, , "CANCEL")

::method ok unguarded
  childDlg = .ExampleChildDlg~new

  reply .false

  self~newPushButton(IDOK)~disable
  self~newPushButton(IDCANCEL)~disable

  childDlg~popupAsChild(self, "SHOWTOP", IDI_DLG_OODIALOG)
  if childDlg~initcode = 0 then do
    do i=1 to 30
      Say "Parent loop" i
      j = msSleep(1000)
      if \ childDlg~isDialogActive then do
        say 'User canceled.  Abort'
        leave
      end

    end
  end

  self~ok:super

Personally, I like the ProgressDialog approach a little better.  But, your approach in your example is doable.

--
Mark Miesfeld



On Thu, Aug 15, 2013 at 8:17 AM, Art Heimsoth <artstore@artheimsoth.com> wrote:
> On Thu, Aug 15, 2013 at 7:39 AM, Staffan Tylen
>
>>>
>>> I put the looping logic in B to look for the cancel signal in
>>> the
>>>
> initDialog method, but that prevents the B dialog panel from being
> displayed.  How do I get that checking logic to run AND the dialog
> to be displayed?
>>
>>
>> If you insert FORWARD CLASS(SUPER) CONTINUE as the first
>> statement in initDialog,
>
>
> Actually, the super class initDialog() is a nop.  Invoking the
> super class initDialog() through forward does nothing and is not
> needed.
>
>
> Doesn't hurt, but really doesn't add anything.  ;-)
>
 
I have modified the example code in the reference manual under popupAsChild
by moving where the child dialog is started and putting some Say statements to
see the operation.  I attached that if someone can tell me what stupid thing I
am doing or not doing :-)..

--
 Art Heimsoth - artstore@artheimsoth.com

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-users mailing list
Oorexx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-users