Yes, please, look my sample
You are defining the coordinates of the buttons with values that belong to dialog 1 of the folder, so the defined actions do not work, even if you have defined with the OF clause, that belong to the main dialog
I changed any size and coordinates of your sample.
I changed nClrPane of dialogs childs of folder only for control size of folder and dialogs defined
When you define the buttons in the main dialog that contains the folder and not in the dialogs of the folder, the actions that you perform in the gets of each dialog do not refresh the defined buttons in main dialog
If you define buttons of oFld:aDialogs[ 1 ], run ok also ( please look your coordinates in this case )
Therefore,
you have to control the refresh of the buttons when these controls are in another dialog different from the one with the focus ( and get defined )
Look get of oRec:Last,
This can be a way to control this
/*
* Demonstrates oRs:EditBaseRecord( [cFieldList], [lAppend], [bEditDlg], [oBrw] )
* Where RowSet contains only some of the fields. this method can be used
* to edit full record of the table with all fields/selected fields
*
*/
#include "fivewin.ch"
#include "dbcombo.ch"
static aStates
//----------------------------------------------------------------------------//
function Main()
聽 聽local oCn, oRs
聽 聽local oDlg, oBrw
聽 聽FWNumFormat( "A", .t. )
聽 聽oCn 聽 := FW_DemoDB()
聽 聽aStates 聽:= oCn:Execute( "SELECT CODE,NAME FROM states" )
聽 聽oRs 聽 := oCn:RowSet( "SELECT ID,FIRST,CITY,SALARY FROM customer" )
聽 聽DEFINE DIALOG oDlg SIZE 500,600 PIXEL TRUEPIXEL ;
聽 聽 聽 TITLE "EditBaseRecord()"
聽 聽@ 70,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
聽 聽 聽 DATASOURCE oRs AUTOCOLS ;
聽 聽 聽 COLSIZES -4, -20, -20 ;
聽 聽 聽 CELL LINES NOBORDER FOOTERS
聽 聽WITH OBJECT oBrw
聽 聽 聽 :Salary:nFooterType 聽:= AGGR_SUM
聽 聽 聽 :MakeTotals()
聽 聽 聽 :CreateFromCode()
聽 聽END
聽 聽@ 20, 20 BTNBMP PROMPT "ADD" 聽SIZE 100,30 PIXEL FLAT OF oDlg ;
聽 聽 聽 ACTION oRs:EditBaseRecord( nil, .t., { |oRec| MyEditDlg( oRec ) }, oBrw )
聽 聽@ 20,130 BTNBMP PROMPT "EDIT" SIZE 100,30 PIXEL FLAT OF oDlg ;
聽 聽 聽 ACTION oRs:EditBaseRecord( nil, .f., { |oRec| MyEditDlg( oRec ) }, oBrw )
聽 聽ACTIVATE DIALOG oDlg CENTERED
return nil
static function MyEditDlg( oRec )
聽 聽local lNew 聽 聽 := ( oRec:RecNo == 0 )
聽 聽local oDlg, oFont, oFld
聽 聽DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
聽 聽DEFINE DIALOG oDlg SIZE 400,570 PIXEL 聽FONT oFont ;
聽 聽 聽 TITLE If( lNew, "ADD NEW ", "EDIT" ) + " RECORD"
聽 聽 聽
聽 聽 //@ 2, 3 FOLDERex oFld OF oDlg SIZE 395, 390 PIXEL;
聽 聽 @ 2, 3 FOLDERex oFld OF oDlg SIZE 380/2, 440/2 PIXEL;
聽 聽 聽 PROMPTS "Page1", "Page2","Page3","Page4" ;
聽 聽 聽 ROUND 10
聽 聽// This for look size of folder and dialogs and not put buttons in a dialog of folder
聽 聽AEVal( oFld:aDialogs, { | o | o:SetColor( CLR_BLUE, CLR_YELLOW ) } )
聽 聽@ 015,010 SAY "ID :" 聽 聽 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 030,010 SAY "First" 聽 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 045,010 SAY "Last" 聽 聽 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 060,010 SAY "Street" 聽 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 075,010 SAY "City" 聽 聽 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 090,010 SAY "State" 聽 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 105,010 SAY "Zip" 聽 聽 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 120,010 SAY "HireDate" 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 135,010 SAY "Married" 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 150,010 SAY "Age" 聽 聽 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 165,010 SAY "Salary" 聽 聽 聽 聽SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 180,010 SAY "Notes" 聽 聽 聽 聽 SIZE 40,10 PIXEL OF oFld:aDialogs[1] RIGHT
聽 聽@ 015,055 GET oRec:ID 聽 聽 聽 聽 SIZE 050,12 PIXEL OF oFld:aDialogs[1] READONLY RIGHT
聽 聽@ 030,055 GET oRec:First 聽 聽 聽SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID !Empty( oRec:First )
聽 聽@ 045,055 GET oRec:Last 聽 聽 聽 SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID ( oDlg:AEValWhen(), !Empty( oRec:Last ) )
聽 聽@ 060,055 GET oRec:Street 聽 聽 SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID !Empty( oRec:Street )
聽 聽@ 075,055 GET oRec:City 聽 聽 聽 SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID !Empty( oRec:City )
聽 聽@ 090,055 DBCOMBO oRec:State 聽SIZE 120,300 PIXEL OF oFld:aDialogs[1] ;
聽 聽 聽 ALIAS aStates ITEMFIELD "1" LISTFIELD "2"
聽 聽@ 105,055 GET oRec:Zip 聽 聽 聽 聽SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID !Empty( oRec:Zip )
聽 聽@ 120,055 GET oRec:HireDate 聽 SIZE 120,12 PIXEL OF oFld:aDialogs[1] VALID !Empty( oRec:HireDate )
聽 聽@ 135,055 CHECKBOX oRec:Married PROMPT "" SIZE 22,12 PIXEL OF oFld:aDialogs[1]
聽 聽@ 150,055 GET oRec:Age 聽 聽 聽 聽SIZE 120,12 PIXEL OF oFld:aDialogs[1] PICTURE "99" RIGHT VALID ( oRec:Age >= 20 )
聽 聽@ 165,055 GET oRec:Salary 聽 聽 SIZE 120,12 PIXEL OF oFld:aDialogs[1] PICTURE "999,999.99" RIGHT VALID ( oRec:Salary > 0 )
聽 聽@ 180,055 GET oRec:Notes 聽 聽 聽SIZE 120,12 PIXEL OF oFld:aDialogs[1]
聽 聽@ 250,010 BTNBMP PROMPT "Save" 聽 SIZE 75,15 PIXEL FLAT OF oDlg ;
聽 聽 聽 ACTION ( If( oRec:Modified(), oRec:Save(), nil ), oDlg:End() ) WHEN oRec:Modified()
聽 聽 聽
聽 聽@ 250,120 BTNBMP PROMPT "Cancel" SIZE 75,15 PIXEL FLAT OF oDlg ACTION oDlg:End()
聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽 聽 //ON PAINT oDlg:Box( 15, 10, 395, 390 )
return nil