Subject |
Re: Subforms |
From |
Duncan <finance@iacsa.co.za; jdstark@telkomsa.net> <Duncan <finance@iacsa.co.za; jdstark@telkomsa.net>> |
Date |
Mon, 18 Aug 2014 14:05:44 -0400 |
Newsgroups |
dbase.getting-started |
Hi Mervyn
Thanks for the advice. I am still trying to get it to work.
I followed your examples and created the test_subedit.wfm & subedit.wfm files. I downloaded your conversion program to convert subedit.wfm to subedit.sfm. I selected subedit.wfm as input and subedit.sfm for output and clicked on the create button, but nothing happened. I then ran the test_subedit.wfm to see if maybe the "sfm" file was not displaying in the dbase directories. I got the error -
Error: Class does not exist: TEST_SUBEDITFORM::TEST_SUBEDITFORM
Duncan
Mervyn Bick Wrote:
> On Wed, 13 Aug 2014 10:24:53 +0200, Duncan <finance@iacsa.co.za> wrote:
>
> > I have created a three page form with a datalink for displaying /
> > updating the rowset information. I am trying to create a subform
> > containing the rowset's memo field (for making notes) that can be
> > invoked through a popup menu on any of the three pages. I used the form
> > designer to create the subform and followed the manual's instructions to
> > change:-
> >
> > class TestFormForm of FORM
> >
> > to
> >
> > class TestFormform( Testpopup, "Mypopup") of SUBFORM( Testpopup,
> > "Mypopup")
> >
> > i.e. Testpopup is the 3 page parent form
> >
> > but i continually get syntax errors on the above statement which I have
> > amended to exclude the parent name without any success.
> > I would welcome any advice to work around the problem.
>
>
> I found subforms a PITA as the form designer can't handle them. To get
> round this I wrote a little program to convert forms to sub forms. This
> way I keep the form available for tweaking in the designer and the subform
> available for use. If I change the form all I need to do is recreate the
> subform again. I name all forms to be converted to subforms as
> subxxxxx.wfm and the converted files are saved as subxxxxx.sfm.
>
> Coordinates for .wfm are relative to the screen coordinates but subform
> coordinates are relative to the parent form's coordinates. Remember to
> move the .wfm form that is to be converted to a .sfm form to the top left
> corner of the designer before saving it.
>
> The parent object and title for the subform are passed as arguments when
> the subform is instantiated so these values should not be hard coded in
> the subform source code.
>
> class TestFormform( oParent, cTitle) of SUBFORM( oParent, cTitle)
>
> In practice I've found that the value in cTitle does NOT get passed to the
> subform so one needs to set the subform text property manually once the
> subform has been instantiated.
>
> Mervyn.
>
>
>
> ********* Start of sub1.sfm ********
> class sub1Form( oParent, cTitle ) of SUBFORM( oParent, cTitle )
> with (this)
> height = 16.0
> left = 21.5714
> top = 1.1364
> width = 40.0
> text = ""
> endwith
>
> this.PUSHBUTTON1 = new PUSHBUTTON(this)
> with (this.PUSHBUTTON1)
> onClick = class::PUSHBUTTON1_ONCLICK
> height = 1.0909
> left = 8.2857
> top = 8.7273
> width = 15.2857
> text = "Pushbutton1"
> endwith
>
>
> function PUSHBUTTON1_onClick
> this.parent.close()
> return
>
> endclass
> ********* End of sub1.sfm *********
>
> ****** Start of subformtest.wfm *******
> ** END HEADER class SubFormTestForm of FORM
> with (this)
> onOpen = class::FORM_ONOPEN
> onClose = class::FORM_ONCLOSE
> height = 19.6818
> left = 71.5714
> top = 4.8182
> width = 70.2857
> text = "Parent Form"
> endwith
>
> this.TEXT1 = new TEXT(this)
> with (this.TEXT1)
> height = 1.7727
> left = 1.8571
> top = 1.0
> width = 37.4286
> text = "Form with a subform."
> endwith
>
> this.PUSHBUTTON1 = new PUSHBUTTON(this)
> with (this.PUSHBUTTON1)
> onClick = class::PUSHBUTTON1_ONCLICK
> height = 1.0909
> left = 3.2857
> top = 11.2727
> width = 15.2857
> text = "Open SubForm"
> endwith
>
> this.PUSHBUTTON2 = new PUSHBUTTON(this)
> with (this.PUSHBUTTON2)
> onClick = class::PUSHBUTTON2_ONCLICK
> height = 1.0909
> left = 3.2857
> top = 13.6818
> width = 15.2857
> text = "Close SubForm"
> endwith
>
>
> function form_onClose
> close procedure sub1.sfm
> return
>
> function form_onOpen
> // instantiate subform
> set procedure to sub1.sfm
> form.subform = new sub1Form( this, " My Subform" )
> //title passed above is ignored. so set it specifically
> form.subform.text = "My subform"
>
> return
>
> function PUSHBUTTON1_onClick
> form.subform.open()
> return
>
> function PUSHBUTTON2_onClick
> form.subform.close()
> return
>
> endclass
> ********* End of subformtest.wfm *********
|
|