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
|
|