Subject Re: Control passing back and fro in a form sub routine
From Milind Nighojkar <milinigh@yahoo.com>
Date Tue, 25 Jul 2023 21:19:53 -0400
Newsgroups dbase.getting-started

Mervyn Bick Wrote:

> On 2023/07/25 16:53, Milind Nighojkar wrote:
> > Milind Nighojkar Wrote:
> >
> >> Scenerio : from a form (say myform) control is branched to another program (say.T.prg)  to execute some code. How to come back to myform and go back to t,prg
> >
> > Additionaaly I want to use a value of  myform in T,prg and refresh myform and return back to T.prg
>
>
> If you give us more details of what you want to do you'll get a better
> answer.
>
> Users usually interact with applications using forms.  Forms can execute
> a program and use the output from the program as often as one likes but
> it is more normal to leave focus on the form afterwards
>
> There are MANY ways to do what you want and the attached example shows
> one simple method.  Type a numeric value into the upper entryfield,
> click the pushbutton and the square of the numeric value will be
> displayed in the lower entryfield.   NO error checking is done so you
> will get errors if don't use numeric values.
>
> If you save a function in a .prg file of the same name as the function
> you can execute the function from the Command Panel or another program.
>   You can also execute the function from withing a form as if the
> function was part of the form.
>
> Once you have saved the files try the following in teh Command Panel
> before you run the form.
>
> ?square(4)
>
> Have a look at the pushbutton's onClick event handler.  This takes the
> value from the upper entryfield, passes it to the function as a
> parameter, executes the function and then assigns the value returned by
> the function to the lower entryfield.
>
> Mervyn.
>
>
>
>
>
>
>
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2023-07-25
> //
> parameter bModal
> local f
> f = new squareForm()
> if (bModal)
>    f.mdi = false // ensure not MDI
>    f.readModal()
> else
>    f.open()
> endif
>
> class squareForm of FORM
>    with (this)
>       onOpen = class::FORM_ONOPEN
>       height = 16.0
>       left = 7.4286
>       top = 1.6818
>       width = 40.0
>       text = ""
>    endwith
>
>    this.ENTRYFIELD1 = new ENTRYFIELD(this)
>    with (this.ENTRYFIELD1)
>       onGotFocus = class::ENTRYFIELD1_ONGOTFOCUS
>       height = 1.0
>       left = 16.0
>       top = 4.0455
>       width = 8.0
>       value = ""
>    endwith
>
>    this.PUSHBUTTON1 = new PUSHBUTTON(this)
>    with (this.PUSHBUTTON1)
>       onClick = class::PUSHBUTTON1_ONCLICK
>       height = 1.0909
>       left = 13.0
>       top = 7.4091
>       width = 15.2857
>       text = "Calculate square"
>    endwith
>
>    this.ENTRYFIELD2 = new ENTRYFIELD(this)
>    with (this.ENTRYFIELD2)
>       height = 1.0
>       left = 16.0
>       top = 10.4545
>       width = 8.0
>       value = ""
>    endwith
>
>
>    function ENTRYFIELD1_onGotFocus()
>       this.value = ''
>       form.entryfield2.value = ''
>       return
>
>    function PUSHBUTTON1_onClick()
>       //Because the default value of entryfield1 has been set to blank
>       //dBASE sees any value entered as a character.  VAL() is used to
>       //convert the character(s) to numeric values.
>       form.entryfield2.value = square(val(form.entryfield1.value))
>       return
>
>    function form_onOpen()
>       set procedure to square.prg
>       return
>
> endclass
>
> function square(nVal)
>   local retVal
>   retVal = nVal*nVal
  return retVal


Mevin to clarify myslef I want to build scenerio on your example itself

You have used set procedure to square.prg. I want to put something like this

function square(nVal)
     local retVal
     do while nVal < = 5
          retVal = nVal*nVal  
          *Display nVal onto the form and come baclk

          nVal = nVal+1
      endd
  return retVal

here I want to go to square.form and display nVal onto the
          *form and come back for next nVal

Hope I clarify