Subject Re: Closing an image on a form
From roy price <royprice@royprice.name>
Date Sat, 10 Apr 2021 02:10:36 -0400
Newsgroups dbase.getting-started

Mervyn Bick Wrote:

> On 2021/04/07 15:12, Mervyn Bick wrote:
>
> > I'm taking a break now to watch the rest of the ODI cricket match
> > between Pakistan and South Africa but I'll give you some code tomorrow.
> > Unless someone else does so first. :-)
>
> What a waste of good computing time that turned out to be.  South Africa
> played badly and was thoroughly beaten by Pakistan. :-(
>
> In the following event handler for
> form.cactusadatamodule1.cactusaa_dbf1.rowset
>
>      this is form.cactusadatamodule1.cactusaa_dbf1.rowset
>      this.parent is form.cactusadatamodule1.cactusaa_dbf1
>      this.parent.parent is form.cactusadatamodule1
>      this.parent.parent.parent is form
>
> With your form open in the designer select the main table's rowset in
> the dropdown list.  Select the Events tab and then select the onNavigate
> event.  Click on the "spanner" button to create the skeleton for the
> event handler and then use the code in one of the following event
> handlers.  Although I've been over it fairly carefully the code is
> untested so it may have problems.  If you can't sort them out yourself
> post the error messages.
>
> With three image controls on the form
>
>     function rowset_onNavigate(type, nRows)
>        if this.fields['photoyesfile'].value = '01'
>          //add code here to navigate to correct record in photos01_dbf1
>          this.parent.parent.parent.imagephoto01.datasource =
> this.parent.parent.photos01_dbf1.rowset.fields["photo"]
>          this.parent.parent.parent.imagephoto02.datasource = []
>          this.parent.parent.parent.imagephoto03.datasource = []
>        elseif this.fields['photoyesfile'].value = '02'
>           //add code here to navigate to correct record in photos02_dbf1
>          this.parent.parent.parent.imagephoto02.datasource =
> this.parent.parent.photos02_dbf1.rowset.fields["photo"]
>          this.parent.parent.parent.imagephoto01.datasource = []
>          this.parent.parent.parent.imagephoto03.datasource = []
>        elseif this.fields['photoyesfile'].value = '03'
>          //add code here to navigate to correct record in photos03_dbf1
>          this.parent.parent.parent.imagephoto03.datasource =
> this.parent.parent.photos03_dbf1.rowset.fields["photo"]
>          this.parent.parent.parent.imagephoto01.datasource = []
>          this.parent.parent.parent.imagephoto02.datasource = []
>        endif
>        return
>
> With one image control on the form
>
>     function rowset_onNavigate(type, nRows)
>        if this.fields['photoyesfile'].value = '01'
>          //add code here to navigate to correct record in photos01_dbf1
>          this.parent.parent.parent.imagephoto01.datasource =
> this.parent.parent.photos01_dbf1.rowset.fields["photo"]
>        elseif this.fields['photoyesfile'].value = '02'
>         //add code here to navigate to correct record in photos02_dbf1
>          this.parent.parent.parent.imagephoto01.datasource =
> this.parent.parent.photos02_dbf1.rowset.fields["photo"]
>        elseif this.fields['photoyesfile'].value = '03'
>         //add code here to navigate to correct record in photos03_dbf1
>          this.parent.parent.parent.imagephoto01.datasource =
> this.parent.parent.photos03_dbf1.rowset.fields["photo"]
>        endif
>        return
>
>
>
> Mervyn.
>
> Hello Again Mervyn / Akshat,
After setting up a test area, with three records on the main table, each with a field "Photoyesfile" "01", "02", "03", and three image files (with one image each), and trying (very trying) the code below in various combinations, I get nowhere with selecting the second and third files images.
The If's or Cases statements work to get to the correct line, but the statements, "this.dataSource =", or "form.testimagedatamodule1.dataSource =" do not cause the first image  to be replaced with the second, or third.

this.IMAGEPHOTO1 = new IMAGE(this)
   with (this.IMAGEPHOTO1)
      onOpen = class::IMAGEPHOTO1_ONOPEN
      height = 19.0
      left = 4.0
      top = 8.5
      width = 78.0
      dataSource = form.testimagedatamodule1.photos01_dbf1.rowset.fields["photo"]
      enabled = true
   endwith

   this.rowset = this.testimagedatamodule1.cactusdb_dbf1.rowset

function IMAGEPHOTO1_onOpen()
       mphoto = form.testimagedatamodule1.cactusdb_dbf1.rowset.fields["photoyesfile"].value
                
     If mPhoto='01'
           this.dataSource =  form.testimagedatamodule1.photos01_dbf1.rowset.fields["photo"]
     elseif mPhoto='02'
      this.dataSource =  form.testimagedatamodule1.photos02_dbf1.rowset.fields["photo"]
     elseif mPhoto='03'
           this.dataSource =  form.testimagedatamodule1.photos03_dbf1.rowset.fields["photo"]
     endif
   return
      return

   function form_onNavigate()
           mphoto = form.testimagedatamodule1.cactusdb_dbf1.rowset.fields["photoyesfile"].value
                do case
                case mphoto = '01'
                   //add code here to navigate to correct record in photos01_dbf1
        form.testimagedatamodule1.dataSource =  form.testimagedatamodule1.photos01_dbf1.rowset.fields["photo"]
      case mphoto= '02'
                  //add code here to navigate to correct record in photos02_dbf1
         form.testimagedatamodule1.dataSource =  form.testimagedatamodule1.photos02_dbf1.rowset.fields["photo"]
      case mPhoto = '03'
                  //add code here to navigate to correct record in photos03_dbf1
         form.testimagedatamodule1.dataSource =  form.testimagedatamodule1.photos03_dbf1.rowset.fields["photo"]
      endcase
      return

   function form_onOpen1()
       mphoto = form.testimagedatamodule1.cactusdb_dbf1.rowset.fields["photoyesfile"].value
                
     If mPhoto='01'
           this.dataSource =  form.testimagedatamodule1.photos01_dbf1.rowset.fields["photo"]
     elseif mPhoto='02'
      this.dataSource =  form.testimagedatamodule1.photos02_dbf1.rowset.fields["photo"]
     elseif mPhoto='03'
           this.dataSource =  form.testimagedatamodule1.photos03_dbf1.rowset.fields["photo"]
     endif
   return
      return