FoxInCloud
Developing sample app
Gravatar is a globally recognized avatar based on your email address. Developing sample app
  Garth Groft
  All
  Mar 1, 2012 @ 08:10am
We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth

Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Tuvia Vinitsky
  Garth Groft
  Mar 1, 2012 @ 03:57pm

"Split" means that FiC does not want you to have code in afterrowcol. Afterrowcol fires in VFP either when the user moves to another cell in the current row (the "col" part) or when the moves to another row (the "row" part).

If you wish to do something that updates a row, it should be in afterrowchange as FAA suggests.

The turow is the current record number. You should add what you want to do but still do the default, like:

dodefault(turow)
...what you want . . .



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth


Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Thierry Nivelet (FoxInCloud)
  Garth Groft
  Mar 2, 2012 @ 01:27am
Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth



-- thn (FoxInCloud)

Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  Thierry Nivelet (FoxInCloud)
  Mar 5, 2012 @ 06:08am
Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth



Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  LLS
  Garth Groft
  Mar 5, 2012 @ 06:21am
I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth




Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Thierry Nivelet (FoxInCloud)
  Garth Groft
  Mar 5, 2012 @ 06:31am
Gilles is right

your .wAfterRowChange() method should be written this way :

LPARAMETERS tuRow
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
<your code to be executed when row changes>
ENDIF


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth





-- thn (FoxInCloud)

Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 5, 2012 @ 07:49am
We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth





Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  LLS
  Garth Groft
  Mar 5, 2012 @ 09:38am
In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth






Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 5, 2012 @ 10:40am
We are only using wAfterRowChange().

I am getting a blank screen after clicking on project button. In VFP IDE the project screen (Form2 is launched) in the browser the app is cleared (no forms open anymore) and screen is blank.

Should i try removing both grids and go back to just a few controls remaining on the child form? There is not much to go on.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth







Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 5, 2012 @ 11:53am
Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth







Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  LLS
  Garth Groft
  Mar 5, 2012 @ 12:18pm
is the recordsource of the grid designed in the VFP IDE ?
is it an alias ?
the best doing, is to open the cursor in the load() method of the form and after put the recorsource of the grid in the code of the init() method of the form..

+
Gilles


Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth








Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 5, 2012 @ 02:29pm
Thank you.

Success! We reverted back to the original sample app and add the desired controls one at a time and testing each build. Everything is now working as expected!

Performance is not as snappy as in VFP IDE but it 's OK. We will address this next. To speed things up, we will now change the app so that our two tables are in a database container, related by SET RELATION.

We are likely running in File mode at the time. Once in production, COM mode can be used and the app should be pretty responsive. Thierry discussed how to implement grid table relations in a prior posting on this forum.

We will also look into putting the record source in the grid in the form's init event.

We also need to make the afterrowcolchange grid event method operate on a condition check for VFP IDE mode. Our completed app must be running on both the desktop and the web.

Tomorrow we will ask a few questions regarding messages that come up when running FAA and test run start up that prevent us from automating (walking away) the process.

Thanks again for your help.

Garth


is the recordsource of the grid designed in the VFP IDE ?
is it an alias ?
the best doing, is to open the cursor in the load() method of the form and after put the recorsource of the grid in the code of the init() method of the form..

+
Gilles


Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth









Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  LLS
  Garth Groft
  Mar 5, 2012 @ 10:44pm
Good..

For both running in LAN and WEB mode you dont have to use AfterRowColChange only wAfterRowChange().. my applications are running into the two modes under FIC/FAA..

Performance are more better when the application EXE is running in COM MODE. In FIC/FAA/VFP IDE it's more slower than in COM mode..

Best regard


Thank you.

Success! We reverted back to the original sample app and add the desired controls one at a time and testing each build. Everything is now working as expected!

Performance is not as snappy as in VFP IDE but it 's OK. We will address this next. To speed things up, we will now change the app so that our two tables are in a database container, related by SET RELATION.

We are likely running in File mode at the time. Once in production, COM mode can be used and the app should be pretty responsive. Thierry discussed how to implement grid table relations in a prior posting on this forum.

We will also look into putting the record source in the grid in the form's init event.

We also need to make the afterrowcolchange grid event method operate on a condition check for VFP IDE mode. Our completed app must be running on both the desktop and the web.

Tomorrow we will ask a few questions regarding messages that come up when running FAA and test run start up that prevent us from automating (walking away) the process.

Thanks again for your help.

Garth


is the recordsource of the grid designed in the VFP IDE ?
is it an alias ?
the best doing, is to open the cursor in the load() method of the form and after put the recorsource of the grid in the code of the init() method of the form..

+
Gilles


Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth










Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 6, 2012 @ 06:59am
Further along ...
1. We put the record source definitions for both parent and child tables in the form's init with no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer.

5. When we run xxxtest.prg to tst the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens.


Good..

For both running in LAN and WEB mode you dont have to use AfterRowColChange only wAfterRowChange().. my applications are running into the two modes under FIC/FAA..

Performance are more better when the application EXE is running in COM MODE. In FIC/FAA/VFP IDE it's more slower than in COM mode..

Best regard


Thank you.

Success! We reverted back to the original sample app and add the desired controls one at a time and testing each build. Everything is now working as expected!

Performance is not as snappy as in VFP IDE but it 's OK. We will address this next. To speed things up, we will now change the app so that our two tables are in a database container, related by SET RELATION.

We are likely running in File mode at the time. Once in production, COM mode can be used and the app should be pretty responsive. Thierry discussed how to implement grid table relations in a prior posting on this forum.

We will also look into putting the record source in the grid in the form's init event.

We also need to make the afterrowcolchange grid event method operate on a condition check for VFP IDE mode. Our completed app must be running on both the desktop and the web.

Tomorrow we will ask a few questions regarding messages that come up when running FAA and test run start up that prevent us from automating (walking away) the process.

Thanks again for your help.

Garth


is the recordsource of the grid designed in the VFP IDE ?
is it an alias ?
the best doing, is to open the cursor in the load() method of the form and after put the recorsource of the grid in the code of the init() method of the form..

+
Gilles


Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth











Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  LLS
  Mar 6, 2012 @ 07:07am
Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth


Good..

For both running in LAN and WEB mode you dont have to use AfterRowColChange only wAfterRowChange().. my applications are running into the two modes under FIC/FAA..

Performance are more better when the application EXE is running in COM MODE. In FIC/FAA/VFP IDE it's more slower than in COM mode..

Best regard


Thank you.

Success! We reverted back to the original sample app and add the desired controls one at a time and testing each build. Everything is now working as expected!

Performance is not as snappy as in VFP IDE but it 's OK. We will address this next. To speed things up, we will now change the app so that our two tables are in a database container, related by SET RELATION.

We are likely running in File mode at the time. Once in production, COM mode can be used and the app should be pretty responsive. Thierry discussed how to implement grid table relations in a prior posting on this forum.

We will also look into putting the record source in the grid in the form's init event.

We also need to make the afterrowcolchange grid event method operate on a condition check for VFP IDE mode. Our completed app must be running on both the desktop and the web.

Tomorrow we will ask a few questions regarding messages that come up when running FAA and test run start up that prevent us from automating (walking away) the process.

Thanks again for your help.

Garth


is the recordsource of the grid designed in the VFP IDE ?
is it an alias ?
the best doing, is to open the cursor in the load() method of the form and after put the recorsource of the grid in the code of the init() method of the form..

+
Gilles


Still not working. We removed both grids from the child form and still the new chilod form is not being launched. The main form is closed or hidden and we are looking at a blank screen. We will now try reverting back to the original sample app which successfully launched a very simple child form last week.


In FAA the wAfterRowColChange() does not exist.. only wAfterRowChange() or wBeforeRowChange() OR wAfterColChange() OR wBeforeColChange() will be used..

when you use FAA, you never use AfterRowColChange() in a grid. You only have to use wAfterRowChange() OR perhaps wAfterColChange()..

+
Gilles


We made the suggested changes. Since we need the app to run in VFP IDE, we would like to retained the .AfterRowColChange event code as well as the .wAfterRowColChange code. .wAfterRowColChange is not doing anything for VFP IDE - right/wrong??

Form2 (form containing the parent and child grids) launches in VFP IDE but in browser screen remains blank after the default "loading" icon appears for a brief time.

Form2 launched fine in our initial testing when Form2 was a more simple form with just text.

Form2 is called from a command button click event:
external form FORM2
FORM2 = m.thisform.wForm('FORM2.scx',.f.)

There are no errors to report in VFP IDE or in the browser.

Any suggestions?

Garth



I'am Frenchy and my english is poor..

Garth you dont have to know what is tuRow.. you only have to respect the FAA syntaxe, like in your forward code..
tuRow is use by FAA to seek the current recno in the grid before and after a HTML query..

LPARAMETERS tuRow && @ identify the current row
IF m.thisForm.wlHTMLgen
RETURN .T.
ELSE
DODEFAULT(m.tuRow)
SELECT Units
SET FILTER TO pid = projects.pid
=THISFORM.grdunits.REFRESH()
ENDIF

Bests regards
Gilles


Thanks for both replies. We now understand the "splitting" idea but still need further clarification.

We put all the .AfterRowColChange event code in .wAfterRowColChange for both grids (Grid1 and GridUnits). We replaced <existing code> with Grid1 .AfterRowColChange event code. We do not know what to pass as tuRow. If turow is RECNO("projects"), then code could be DoDefault("RECNO("projects"))?

Grid1.wAfterRowColChange
IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow)
* <existing code>
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh
ENDIF

GridUnits.wAfterRowColChange:
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
Thisform.txtqty.refresh
thisform.txttonnage.refresh


Garth,

Tuvia's answer is absolutely right, I'll just expand a little more on that ...

.AfterRowColChange() triggers on either row change or column change; ActiveWidget's grid has 2 separate events for the same effect: row change and col change; having a 1-1 match between javascript and VFP events requires that you move your code processing row change to .wAfterRowChange() and/or your code processing column change to .wAfterColChange(), resulting in an empty .AfterRowColChange() method so that default aw.vcx!awGrd code executes (this default code ensures calling either .wAfterRowChange() or .wAfterColChange() when running in LAN mode).

tuRow is whatever data identifies current row, brought in by FoxInCloud Application Server, and processed by aw.vcx!awGrd::wRowChange() through the DoDefault(tuRow) instruction.

If your grid.RecordSource has a primary or candidate index key, it prevails on recno() used by default.

As index key may be of any type (mainly 'C' or 'I', but could be 'T' or whatever), parameter name is 'tuRow' follows VFP standard variable naming convention :
- 't' for parameter
- 'u' for unknown type
- 'Row' for Row identifier.

HTH,

thn



We are expanding our sample form by adding a classic table maintenance (add,edit,delete) form launched from a button on form1 (main). Our maintenance form has a parent grid and child grid. The parent grid (grid1.afterrowcol change) has the following code to display the child record associated with the parent record.

LPARAMETERS nColIndex
SELECT Units
SET FILTER TO pid = projects.pid
thisform.grdunits.refresh

We could have SET RELATION between the parent and child tables in the forms Init instead of SET FILTER in the grid's Event method.

FAA indicates that following manual change is needed:

Code for this event method must be split into before/afterRowChange() and before/afterColChange().

awGrd parent class code should execute:

IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

Split server code into wAfterRowChange() et wAfterColChange()

Our question is what does this message mean? what is meant by code for this event method must be split?

What is meant by awGrd parent class code should execute: IF NOT m.thisForm.wlHTMLGen
DoDefault(tuRow))
<existing code>
ENDIF

What is tuRow in DoDefault(tuRow))?

FAA has a similar message for the text field refreshes code in the child grid afterrowcolchangeevent method:
LPARAMETERS nColIndex
Thisform.txtpid.refresh
Thisform.txtseq.refresh
Thisform.txtmodel_no.refresh
Thisform.txtselleach.refresh
thisform.txtqty.refresh
thisform.txttonnage.refresh

How/where do we "split" these commands? What actually needs to be changed?

Thanks.

Garth











Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Thierry Nivelet (FoxInCloud)
  Garth Groft
  Mar 6, 2012 @ 08:35am
1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth


-- thn (FoxInCloud)

Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  Thierry Nivelet (FoxInCloud)
  Mar 7, 2012 @ 07:49am
3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title ba - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth


Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Thierry Nivelet (FoxInCloud)
  Garth Groft
  Mar 7, 2012 @ 08:59am
'No disk drive': VFP/Windows issue - need additional details when this error occurs

Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances

Acrobat: should not be an issue if you use PDFxChange


7. a. FiC does supports form.NoTitleBar on master forms - we might consider supporting it on child forms but then user would loose the 'report a bug' link in form title bar, and the ability to move the form inside the browser view port.
You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. b.
Supporting
In between You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. d.
FiC reference:
- Form title bar: modify xxxTest.ini
- Form page: override xxxProcess.wFormHTML_cSignature(), .wFormHTML_cHeader(), .wFormHTML_cFooter()

VFP reference: where?


3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title bar - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth




-- thn (FoxInCloud)

Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  Thierry Nivelet (FoxInCloud)
  Mar 8, 2012 @ 06:12am
1. We have a small issue running in the browser with the Add function in our projects maintenance form. Works in VFP IDE. Units table is a filtered free table at this time. This table has several index including a candidate index uniqueid (index = uniqueid field). Date entry is in text fields not in the grid. Data entry seems "resisted" (hard to control entry). Data entered does not get saved by Save button. We have an Edit button which only does a set focus to first text field. Save works after an Edit. Weird. This is a very basic form.

Add button clickk event:
SELECT units
savecurrentrecord = RECNO("units")
cDomainString = "HOME"
cProjectString = projects.pid
SELECT MAX(seq) FROM units WHERE domain = cDomainString AND pid = cProjectString AND NOT DELETED() INTO CURSOR maxseq
IF VARTYPE(maxseq.max_seq) = "X" && .NULL.
nextseq = "001"
ELSE
nextseq = STRTRAN(STR(VAL(maxseq.max_seq)+1,3)," ","0")
ENDIF
SELECT units
*!* APPEND BLANK
*!* nextuniqueid = SYS(2015)
*!* REPLACE IN units ;
units.domain WITH USERS.domain, ;
units.pid WITH Projects.pid, ;
units.seq WITH nextseq, ;
model_no WITH "", ;
units.qty WITH 1, ;
units.selleach WITH 0, ;
units.tonnage WITH "3", ;
units.uniqueid WITH nextuniqueid
INSERT INTO units (uniqueid) values (SYS(2015))
REPLACE IN units ;
units.domain WITH USERS.domain, ;
units.pid WITH Projects.pid, ;
units.seq WITH nextseq, ;
modelevap WITH "", ;
units.qty WITH 1, ;
units.selleach WITH 0, ;
units.tonnage WITH "3"

thisform.refreshdata()
Thisform.GrdUnits.Refresh
Thisform.txtModel_no.setfocus

Edit button click event:

Thisform.txtModel_no.setfocus


Save button click event:

SELECT units
TABLEUPDATE(.T.) &&TABLEUPDATE() - same result
thisform.grdunits.setfocus

2. see email for a few more screen shots.

Garth


'No disk drive': VFP/Windows issue - need additional details when this error occurs

Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances

Acrobat: should not be an issue if you use PDFxChange


7. a. FiC does supports form.NoTitleBar on master forms - we might consider supporting it on child forms but then user would loose the 'report a bug' link in form title bar, and the ability to move the form inside the browser view port.
You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. b.
Supporting
In between You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. d.
FiC reference:
- Form title bar: modify xxxTest.ini
- Form page: override xxxProcess.wFormHTML_cSignature(), .wFormHTML_cHeader(), .wFormHTML_cFooter()

VFP reference: where?


3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title bar - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth




Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  Thierry Nivelet (FoxInCloud)
  Mar 8, 2012 @ 10:21am
From TN: Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances.

See attachment. the two copies of this class are most likely used are in c:\users\garth. We used PM to give you the screen shot of the wwipstuff.vcs files found on my system. We understand the two files in C:\Users/Garth were installed by your system.

We don't know which one is needed. We do not know why there is a c:\Users\Garth\AppData\Local\VirtualStore folder in windows 7.

To speed up development, we prefer to open FoxInCloud Studio - Full Version and stay there - not jump back and forth between FAA and FoxInCloud - Full Version.

PDFxChange is set as our default PDF viewer.

Garth


'No disk drive': VFP/Windows issue - need additional details when this error occurs

Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances

Acrobat: should not be an issue if you use PDFxChange


7. a. FiC does supports form.NoTitleBar on master forms - we might consider supporting it on child forms but then user would loose the 'report a bug' link in form title bar, and the ability to move the form inside the browser view port.
You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. b.
Supporting
In between You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. d.
FiC reference:
- Form title bar: modify xxxTest.ini
- Form page: override xxxProcess.wFormHTML_cSignature(), .wFormHTML_cHeader(), .wFormHTML_cFooter()

VFP reference: where?


3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title bar - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth




Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Tuvia Vinitsky
  Garth Groft
  Mar 8, 2012 @ 06:42pm

The alias name in use is because FiC is setting a classlib that you already have set. We set wwipstuff in our claslibs because we use it, so then when FiC tries to do the same you get that error. FiC does it in ac.prg. I suggested they bracket all set classlib and check if the classlib already is loaded. FiC was also using an older version of wwipstuff.

We just edited ac.prg.


From TN: Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances.

See attachment. the two copies of this class are most likely used are in c:\users\garth. We used PM to give you the screen shot of the wwipstuff.vcs files found on my system. We understand the two files in C:\Users/Garth were installed by your system.

We don't know which one is needed. We do not know why there is a c:\Users\Garth\AppData\Local\VirtualStore folder in windows 7.

To speed up development, we prefer to open FoxInCloud Studio - Full Version and stay there - not jump back and forth between FAA and FoxInCloud - Full Version.

PDFxChange is set as our default PDF viewer.

Garth


'No disk drive': VFP/Windows issue - need additional details when this error occurs

Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances

Acrobat: should not be an issue if you use PDFxChange


7. a. FiC does supports form.NoTitleBar on master forms - we might consider supporting it on child forms but then user would loose the 'report a bug' link in form title bar, and the ability to move the form inside the browser view port.
You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. b.
Supporting
In between You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. d.
FiC reference:
- Form title bar: modify xxxTest.ini
- Form page: override xxxProcess.wFormHTML_cSignature(), .wFormHTML_cHeader(), .wFormHTML_cFooter()

VFP reference: where?


3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title bar - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth





Gravatar is a globally recognized avatar based on your email address. Re: Developing sample app
  Garth Groft
  Tuvia Vinitsky
  Mar 9, 2012 @ 11:05am
Thanks, Tuvia - We will check that out.

The alias name in use is because FiC is setting a classlib that you already have set. We set wwipstuff in our claslibs because we use it, so then when FiC tries to do the same you get that error. FiC does it in ac.prg. I suggested they bracket all set classlib and check if the classlib already is loaded. FiC was also using an older version of wwipstuff.

We just edited ac.prg.


From TN: Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances.

See attachment. the two copies of this class are most likely used are in c:\users\garth. We used PM to give you the screen shot of the wwipstuff.vcs files found on my system. We understand the two files in C:\Users/Garth were installed by your system.

We don't know which one is needed. We do not know why there is a c:\Users\Garth\AppData\Local\VirtualStore folder in windows 7.

To speed up development, we prefer to open FoxInCloud Studio - Full Version and stay there - not jump back and forth between FAA and FoxInCloud - Full Version.

PDFxChange is set as our default PDF viewer.

Garth


'No disk drive': VFP/Windows issue - need additional details when this error occurs

Alias name already in use: you probably have 2 copies of wwIPstuff.vcx in Set('Path') - or make sure you run FAA and FAS in 2 separate VFP instances

Acrobat: should not be an issue if you use PDFxChange


7. a. FiC does supports form.NoTitleBar on master forms - we might consider supporting it on child forms but then user would loose the 'report a bug' link in form title bar, and the ability to move the form inside the browser view port.
You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. b.
Supporting
In between You might add to xxx.css:
.dialog .top.table_window, .mac_os_x_close, .mac_os_x_minimize, .mac_os_x_maximize {display:none;}

7. d.
FiC reference:
- Form title bar: modify xxxTest.ini
- Form page: override xxxProcess.wFormHTML_cSignature(), .wFormHTML_cHeader(), .wFormHTML_cFooter()

VFP reference: where?


3.,4.,5. - debugger screens - see private email, forthcoming..
7. a. no title bars -the entire design has forms with no title bar - client's choice. We created a form with no title bar and tested in FIC - Title bar is still present. Apparently FiC does not support NoTitleBar form property. Any CSS options on title bar?
7. b. no min., max. or close buttons on any forms. CSS options ???
7. d. no VFP or FIC text or icons wanted anywhere in production version. See private email attachments.

Thanks.


1. You can set .RecordSource at design time or at grid.Init() - better not change it afterwards
2. FiC supports child grid with a parameterized view - just requery your child view when parent grid record changes - just like in our on-line demo http://foxincloud.com/demos.php
3. please provide a debugger screen shot when error occurs
4. same as 3.
5. please check you don't have 2 copies of the same vcx in scope
6. .wAfterRowChange() should run if .AfterRowColChange() has no code at all
7.a. don't understant
7.b. on master form or child form?
7.c. just implement your sub-class of awFrmMB (xxx.vcx!xxxFrmMB) and check xxx.vcx!xxxFrm.cwcMessageBoxClass = 'xxxFrmMB'
7.d. "no FoxInCloud text" - where?



Further along ...
1. We put the record source definitions for both parent and child tables in the form's init() but saw no obvious difference.

2. We replaced the set filter parent/child table link with a set relation link. This works as expected in VFP IDE, but in browser, child table grid shows all child records. We added expression (Projects.domain+ Projects.pid) to relational expression property in child grid - no change. How can we show only the child record associated with parent table records in browser?

3. For our convenience, we added the FAA app (awadapterstart) to our project. This works fine except when we hit Run, we get a messages "There is no disk in the drive ....".

4. When FAA comes up and we hit "Adapt" we get repeated messages, "The Acrobat Reader that is running cannot be used to view PDF files in a Web Browser. ..." Acrobat is not running and we have the default set to PDF-XChange Viewer. ???

5. When we run xxxtest.prg to test the app in a browser, we get the message "Alias name already in use" twice. We hit ignore and are able to proceeded and test the app in the browser anyway.

6. We had to put replicate our wAfterRowChange() code under AfterRowColChange to make the app work in VFP IDE. We verified that wAfterRowChange() is not being run in VFP IDE by adding a SET STEP ON to the method.

7. Here is some feedback from our client to our FoxInCloud screens:
a. They want no title bar which can be handled within in VFP. We like the abilty to move windows. Maybe title bar can be retained but "disguised".
b. They don't want the three buttons at the top of a window.
c. They want the message box icons to be much smaller.
d. no FoxInCloud text.

Garth






© 1996-2016