when you press "test new" button the xbrowse must be clear and reinsert a new record if lsearch is false and it is ok
then press "test new" the button "test number selection is activated now press the services but the procedure not insert the services
Code: Select all
#include"fivewin.ch"
Function test()
Local oDlg,oFolder,oFont
Local adata:={}
Local oBrowse
Local oBtnServices[3]
local nInvoice:="1234567890123"
local lSearch:=.t.
local lShowbutton:=.f.
local oSelNumber
// to simulation
adata := addFirstRecord(nInvoice)
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE DIALOG oDlg ;
TITLE "test" ;
SIZE 1130,650 PIXEL ;
FONT oFont
@ 1, 0 FOLDEREX oFolder OF oDlg SIZE oDlg:nWidth-585,oDlg:nHeight-390 PIXEL ;
PROMPT "Prenotazioni","Pagamenti","Familiari"
oFolder:aEnable = { .t., .f. ,.t.}
@ 60, 02 XBROWSE oBrowse OF oFolder:aDialogs[1] ;
COLUMNS 1,2,3,4,5,6,7,8,9,10,11;
HEADERS "Ico","Tipo","Servizio","Q.tà","Costo","Tot p q.tà","Dal","al","Giorni","Sconto","Totale" ;
PICTURES nil, nil,"@!","9999","€ 999,999.99","€ 999,999.99", "dd-mmmm-yyyy","dd-mmmm-yyyy","999","€ 999,999.99","€ 999,999.99" ;
COLSIZES 55, 25,130,50,90,90,140,140,50,90,120 ;
ARRAY aData ;
SIZE 100,80 PIXEL NOBORDER
WITH OBJECT oBrowse
:nRowHeight := 30
:MakeTotals()
:lfooter := .T.
:ldrawborder:=.t.
:lHscroll := .F.
:l2007 := .F.
:l2015 := .T.
:nStretchCol := STRETCHCOL_WIDEST
:lAllowRowSizing := .F.
:lAllowColSwapping := .F.
:lAllowColHiding := .F.
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:CreateFromCode()
END
@ 260,80 BUTTONBMP oSelBtn;
RESOURCE "INVOICE_SELBTN" ;
PROMPT " test new" SIZE 85,15 PIXEL OF oDlg;
TEXTRIGHT ;
ACTION (lSearch:=!lsearch, ;
Search_New(oBrowse,nInvoice,lSearch,@lShowbutton,@oSelNumber),;
oSelNumber:refresh())
@ 260,280 BUTTONBMP oSelNumber;
PROMPT " test new Select number" SIZE 85,15 PIXEL OF oDlg;
TEXTRIGHT UPDATE;
ACTION (Search_New(oBrowse,nInvoice,.f.,@lShowbutton,@oSelNumber)) WHEN lShowbutton
oDlg:bResized := <||
oRect := oDlg:GetCliRect()
oFolder:nWidth := oRect:nRight-2
oFolder:nHeight := oRect:nBottom-160
oBrowse:nTop := oRect:nBottom-350
oBrowse:nWidth := oRect:nWidth - 15
return nil
>
ACTIVATE DIALOG oDlg ;
ON INIT (SerVices(oFolder,adata,nInvoice,obrowse),;
oSelNumber:disable(),;
EVAL( oDlg:bResized) )
RETURN NIL
//-------------------------------------------------------------//
Function addFirstRecord(nInvoice)
Local atmp:= {}
local cIcoPro ,;
cTipo ,;
cDescPro ,;
nQta ,;
nPreUni ,;
nPreTot ,;
nTotQta ,;
dDataIni ,;
dDataFin ,;
nGiorni ,;
nSconto ,;
nTotaleRiga ,;
lPrintA4 ,;
lPrintPos,;
cStruttura,;
cDescBreve,;
serial,ntotale
// to make a simulation
cIcoPro := ".\bitmaps\ombrellone.png"
cTipo := "E"
cDescPro := "OMBRELLONE"
nQta := 1
nPreUni := 6
nPreTot := 6
nTotQta := 1
dDataIni := date()
dDataFin := date()
nGiorni := 1
nSconto := 0
nTotaleRiga := 6
lPrintA4 := .f.
lPrintPos:= .f.
cStruttura:=""
cDescBreve:=""
serial :=1
nTotale:= nPreUni* nQta
AaDd(aTmp,{ cIcoPro ,;
cTipo ,;
cDescPro ,;
nQta ,;
nPreUni ,;
nTotQta ,;
dDataIni ,;
dDataFin ,;
nGiorni ,;
nSconto ,;
nTotale ,;
nInvoice ,;
lPrintA4 ,;
lPrintPos,;
cStruttura,;
cDescBreve,;
serial })
return aTmp
//---------------------------------------------------------------//
Function Search_New(oBrowse,nInvoice,lSearch,lShowbutton,oSelNumber)
Local aItems:= {}
If lSearch
aItems:= {} //empty
oSelNumber:enable()
lShowbutton:=.t.
oSelNumber:Refresh()
ELSE
aItems:= addNewRecord(nInvoice)
oSelNumber:Disable()
lShowbutton:=.F.
oSelNumber:Refresh()
ENDIf
oBrowse:aArraydata:= aItems
oBrowse:refresh()
oBrowse:goBottom()
oBrowse:setfocus()
* xbrowser oBrowse:aArraydata
return nil
//---------------------------------------------------------------//
Function addNewRecord(nInvoice)
Local atmp:= {}
local cIcoPro ,;
cTipo ,;
cDescPro ,;
nQta ,;
nPreUni ,;
nPreTot ,;
nTotQta ,;
dDataIni ,;
dDataFin ,;
nGiorni ,;
nSconto ,;
nTotaleRiga ,;
lPrintA4 ,;
lPrintPos,;
cStruttura,;
cDescBreve,;
serial,ntotale
// to make a simulation
cIcoPro := ".\bitmaps\ombrellone.png"
cTipo := "E"
cDescPro := "OMBRELLONE"
nQta := 1
nPreUni := 6
nPreTot := 6
nTotQta := 1
dDataIni := date()+2
dDataFin := date()+5
nGiorni := 1
nSconto := 0
nTotaleRiga := 6
lPrintA4 := .f.
lPrintPos:= .f.
cStruttura:=""
cDescBreve:=""
serial :=1
nTotale:= nPreUni* nQta
AaDd(aTmp,{ cIcoPro ,;
cTipo ,;
cDescPro ,;
nQta ,;
nPreUni ,;
nTotQta ,;
dDataIni ,;
dDataFin ,;
nGiorni ,;
nSconto ,;
nTotale ,;
nInvoice ,;
lPrintA4 ,;
lPrintPos,;
cStruttura,;
cDescBreve,;
serial })
return aTmp
//---------------------------------------------------------------//
Function SerVices(oFolder,adata,nInvoice,obrowse)
local aServices:={ {"Bed",8},;
{"Chair",6},;
{"Seat",12}}
Local abtnServices[3]
local nservizio
local cDesc,nPrice
local nRow:= 100
local nCol:= 10
For nServizio =1 to 3
cDesc:= aServices[nServizio][1]
nPrice:= aServices[nServizio][2]
@ nRow, ncol BTNBMP aBtnservices[nServizio] ;
SIZE 192,95 PIXEL FLAT ;
PROMPT cDesc +CRLF+ ltrim(str(nPrice)) ;
OF oFolder:aDialogs[1]
aBtnservices[nServizio]:Cargo := {cDesc,nPrice}
aBtnservices[nServizio]:bAction := { | oBtnpro | InsertServices(oBtnpro,nInvoice,adata,obrowse) }
ncol+=200
Next
return nil
//---------------------------------------------------------------//
Function InsertServices(oBtnpro,nInvoice,adata,obrowse)
// simulation insertion products
Local cProdDesc := oBtnpro:Cargo[1]
Local nProdPrice := oBtnpro:Cargo[2]
local cIcoPro:="" ,;
cTipo :="S" ,;
cDescPro := cProdDesc,;
nQta := 1,;
nPreUni :=nProdPrice,;
nPreTot := nPreUni*nQta,;
nTotQta := nPreTot,;
dDataIni := date(),;
dDataFin := date(),;
nGiorni := 1,;
nSconto := 0,;
nTotaleRiga :=nTotQta *nGiorni ,;
lPrintA4 := .t.,;
lPrintPos:= .t.,;
cStruttura:= "",;
cDescBreve:= "",;
nUni:= 0 ,;
nSerial := 0
AaDd(aData,{ cIcoPro ,;
cTipo ,;
cDescPro ,;
nQta ,;
nPreUni ,;
nTotQta ,;
dDataIni ,;
dDataFin ,;
nGiorni ,;
nSconto ,;
nTotaleRiga ,;
nInvoice ,;
lPrintA4 ,;
lPrintPos,;
cStruttura,;
cDescBreve,;
nSerial,;
nUni })
oBrowse:refresh()
oBrowse:goBottom()
oBrowse:setfocus()
return nil