Con el POS de Marek...
Code: Select all
#include <hmg.ch>
#include "hbclass.ch"
FUNCTION Main()
LOCAL nReng := 10, nColu := 10, nVeces := 1, aMapa := ARRAY( 10 )
aMapa[ 1] := "1111111111"
aMapa[ 2] := "1111111111"
aMapa[ 3] := "1111000011"
aMapa[ 4] := "1110000000"
aMapa[ 5] := "1100000000"
aMapa[ 6] := "1100000000"
aMapa[ 7] := "1110000000"
aMapa[ 8] := "1111000011"
aMapa[ 9] := "1111111111"
aMapa[10] := "1111111111"
// ************Touch system MOL-Systemy Komputerowe mol@pro.onet.pl
//*******************************************************************
public nLiczbaWierszy := 5
public nLiczbaKolumn := 5
public aStosPlansz := {}
* private cNazwaOkna := "Form_Main"
private aPozycje := {}
private aHeaders := {'Towar','Nazwa','Ilość'}
private aWidths := {55,95,55}
private aJust := {0,0,1}
private oMiniGrid
aPlansza1 := { { 1,1,"Zestaw"+chr(10)+"Schab","T","000100"} ,;
{ 1,2,"Zestaw"+chr(10)+"Mielony","T","000101"} ,;
{ 1,3,"Zestaw"+chr(10)+"Kurczak","T","000111"} ,;
{ 2,2,"Naleśniki","T","000102"} ,;
{ 2,3,"Pierogi","T","000103"} ,;
{ 3,1,"Surówki","P",2} ,;
{ 3,2,"Napoje","P",3} }
aPlansza2 := { { 1,1, "Kapusta"+chr(10)+"biała", "T", "000201"} ,;
{ 1,2, "Kapusta"+chr(10)+"czerwona", "T", "000202"} ,;
{ 1,3, "Kapusta"+chr(10)+"MIX", "T", "000203"} ,;
{ 2,1, "Buraczki", "T", "000204"} ,;
{ 2,2, "Marchewka", "T", "000205"} ,;
{ 2,4, "Seler", "T", "000206"} }
aPlansza3 := { { 1,1, "Cola 0,5l", "T", "000301"} ,;
{ 1,2, "Pepsi 0,2l", "T", "000302"} ,;
{ 1,3, "Jurajska 0,5l", "T", "000303"} ,;
{ 2,1, "Tymbark"+chr(10)+"jabłko"+chr(10)+"mięta", "T", "000304"} ,;
{ 2,3, "Kawa express", "T", "000305"} ,;
{ 3,3, "Herbata", "T", "000306"} }
// ************Touch system MOL-Systemy Komputerowe mol@pro.onet.pl
//*******************************************************************
DEFINE WINDOW FormMain AT 0 , 0 WIDTH 1024 HEIGHT 570 MAIN BACKCOLOR BLUE TITLE " M E S A S "
FOR i1 = 1 TO 10
FOR i2 = 1 TO 10
IF SUBSTR( aMapa[ i1 ], i2, 1 ) = "1"
cCtrlPso := "LB_Descrip"+STRZERO( nVeces, 3 )
@ nReng,nColu TEXTBOX &cCtrlPso. OF FormMain VALUE "Libre" WIDTH 80 HEIGHT 15 FONT "Consolas" SIZE 8 ;
ON ENTER ( ActMesa( This.Name, This.Value ) ) // TOOLTIP ( This.Value )
cCtrlPso := "LB_Mesas"+STRZERO( nVeces, 3 )
@ nReng+16,nColu LABEL &cCtrlPso. OF FormMain VALUE "MESA "+STRZERO( nVeces, 3 ) WIDTH 80 HEIGHT 20 FONT "Consolas" SIZE 12 CENTERALIGN ;
ACTION WinPtoVta( This.Value ) TOOLTIP ( "Point of Sale" )
nVeces += 1
ENDIF
nColu += 100
NEXT
nColu := 10
nReng += 50
NEXT
END WINDOW
CENTER WINDOW FormMain
ACTIVATE WINDOW FormMain
RETURN
*--------------------------------------------------------------
FUNCTION ActMesa( cNombre, cDesc )
SetProperty( "FormMain", cNombre, "BACKCOLOR", IF( "LIBRE" <> UPPER( ALLTRIM( cDesc ) ), YELLOW, WHITE ) )
RETURN
*--------------------------------------------------------------
FUNCTION WinPtoVta( cValue ) // Define Window
LOCAL ChildForm := STRTRAN( cValue, " ", "_" )
LOCAL xCtrol := "LB_Descrip"+RIGHT( cValue, 3 )
LOCAL aCtrol := GetProperty( "FormMain", xCtrol, "Value" )
IF ! IsWindowDefined( &ChildForm )
DEFINE WINDOW &ChildForm AT 0 , 0 WIDTH 1000 HEIGHT 590 WINDOWTYPE CHILD NOSIZE NOMINIMIZE NOMAXIMIZE BACKCOLOR GRAY // { 112 , 128 , 144 }
ON KEY ESCAPE ACTION ( ThisWindow.Release )
SetProperty( ChildForm, "Title", ChildForm + " " + aCtrol )
@ 010 , 010 TEXTBOX TBX01 OF &ChildForm VALUE aCtrol WIDTH 180 HEIGHT 15 FONT "Consolas" SIZE 8 ;
ON CHANGE ( SetProperty( ChildForm, "Title", ChildForm + " " + This.Value ), ;
SetProperty( "FormMain", xCtrol, "Value", This.Value ), ;
ActMesa( xCtrol, This.Value ) )
// Aquí, tu proceso de Punto de Venta...
// Here, your Point of Sale process ...
TouchSystemMol( ChildForm )
END WINDOW
CENTER WINDOW &ChildForm
ACTIVATE WINDOW &ChildForm
ELSE
DoMethod( ChildForm, "SetFocus")
ENDIF
RETURN
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
// ************Touch system MOL-Systemy Komputerowe mol@pro.onet.pl
//*******************************************************************
#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ] ;
=> ;
IF <v1> == NIL ; <v1> := <x1> ; END ;
[; IF <vn> == NIL ; <vn> := <xn> ; END ]
*--------------------------------
CLASS MINIGRID
DATA cFormName
DATA nRow
DATA nCol
DATA nWidth
DATA nHeight
DATA nVWidth
DATA nVHeight
DATA aHeaders
DATA aWidths
DATA aJust
DATA nLiczbaWierszy INIT 0
DATA nWysokoscWiersza INIT 50
DATA nFontSize INIT 12
DATA aRowBackColor INIT {255,224,224}
METHOD New
METHOD AddRow SETGET
METHOD DeleteRow SETGET
METHOD ChangeRow SETGET
ENDCLASS
*--------------------------------
METHOD New ( cFormName, nRow, nCol, nWidth, nHeight, nVWidth, nVHeight, aHeaders, aWidths, aJust) CLASS MINIGRID
local i, x
local cHeaderLabel
::cFormName := cFormName
::nRow := nRow
::nCol := nCol
::nWidth := nWidth
::nHeight := nHeight
::nVWidth := nVWidth
::nVHeight := nVHeight
::aHeaders := aHeaders
::aWidths := aWidths
::aJust := aJust
define window &cFormName ;
row nRow ;
col nCol ;
width nWidth ;
height nHeight ;
VirtualWidth nVWidth ;
VirtualHeight nVHeight ;
WindowType PANEL
x:= 0
for i := 1 to len(aHeaders)
cHeaderLabel := "Head_"+strzero(i,3)
if aJust[i] == 1
DEFINE LABEL &cHeaderLabel
PARENT &cFormName
ROW 0
COL 0+x
width aWidths[i]
height 19
VALUE aHeaders[i]
fontNAME "ARIAL"
FONTSIZE 9
FONTCOLOR BLACK
alignment RIGHT
backcolor {196,196,196}
END LABEL
elseif aJust[i] == 2
DEFINE LABEL &cHeaderLabel
PARENT &cFormName
ROW 0
COL 0+x
width aWidths[i]
height 19
VALUE aHeaders[i]
fontNAME "ARIAL"
FONTSIZE 9
FONTCOLOR BLACK
alignment CENTER
backcolor {196,196,196}
END LABEL
else
DEFINE LABEL &cHeaderLabel
PARENT &cFormName
ROW 0
COL 0+x
width aWidths[i]
height 19
VALUE aHeaders[i]
fontNAME "ARIAL"
FONTSIZE 9
FONTCOLOR BLACK
alignment LEFT
backcolor {196,196,196}
END LABEL
endif
SET CONTROL &cHeaderLabel OF &cFormName STATICEDGE
x+= aWidths[i]
next i
end window
return Self
*--------------------------------
METHOD AddRow (aWiersz) CLASS MINIGRID
local k
local x
local cLabelName
local cVal
local cType
local bAkcja
::nLiczbaWierszy++
x := 0
bAkcja := "PoprawPozycjeMiniGrid("+str(::nLiczbaWierszy)+")"
for k:=1 to len(::aHeaders)
cLabelName := "Wiersz_"+strzero(::nLiczbaWierszy,3)+"_"+strzero(k,3)
if ::aJust[k] == 1
DEFINE LABEL &cLabelName
parent &(::cFormName)
fontNAME "ARIAL"
FONTSIZE ::nFontSize
FONTCOLOR BLACK
alignment RIGHT
backcolor ::aRowBackColor
ACTION &bAkcja
END LABEL
elseif ::aJust[k] == 2
DEFINE LABEL &cLabelName
parent &(::cFormName)
fontNAME "ARIAL"
FONTSIZE ::nFontSize
FONTCOLOR BLACK
alignment CENTER
backcolor ::aRowBackColor
ACTION &bAkcja
END LABEL
else
DEFINE LABEL &cLabelName
parent &(::cFormName)
fontNAME "ARIAL"
FONTSIZE ::nFontSize
FONTCOLOR BLACK
alignment LEFT
backcolor::aRowBackColor
ACTION &bAkcja
END LABEL
endif
SetProperty(::cFormName, cLabelName,"ROW", 20 + (::nLiczbaWierszy-1)* ::nWysokoscWiersza)
SetProperty(::cFormName, cLabelName,"COL",0+x)
SetProperty(::cFormName, cLabelName,"width", ::aWidths[k])
SetProperty(::cFormName, cLabelName,"height", ::nWysokoscWiersza)
cType := valtype(aWiersz[k])
if cType== "N"
cVal := alltrim(str(aWiersz[k]))
elseif cType == "D"
cVal := dtoc(aWiersz[k])
elseif cType == "L"
cVal := if(aWiersz[k],"T","N")
else
cVal := aWiersz[k]
endif
SetProperty(::cFormName, cLabelName,"VALUE", cVal)
SET CONTROL &cLabelName OF MiniGrid STATICEDGE
x+= aWidths[k]
next k
return
*--------------------------------
METHOD ChangeRow (nPozycja) CLASS MINIGRID
local k
local cLabelName
for k:=1 to len(::aHeaders)
cLabelName := "Wiersz_"+strzero(nPozycja,3)+"_"+strzero(k,3)
cType := valtype(aPozycje[nPozycja,k])
if cType== "N"
cVal := alltrim(str(aPozycje[nPozycja,k]))
elseif cType == "D"
cVal := dtoc(aPozycje[nPozycja,k])
elseif cType == "L"
cVal := if(aPozycje[nPozycja,k],"T","N")
else
cVal := aPozycje[nPozycja,k]
endif
SetProperty(::cFormName,cLabelName,"Value",cVal)
next k
return
*--------------------------------
METHOD DeleteRow (nPozycja) CLASS MINIGRID
local i
local k
local cLabelName1
local cLabelName2
local cVal
// move rows
for i:=nPozycja+1 to ::nLiczbaWierszy
for k:=1 to len(::aHeaders)
cLabelName1 := "Wiersz_"+strzero(i,3)+"_"+strzero(k,3)
cLabelName2 := "Wiersz_"+strzero(i-1,3)+"_"+strzero(k,3)
cVal := GetProperty(::cFormName,cLabelName1,"Value")
SetProperty(::cFormName,cLabelName2,"Value",cVal)
next k
next i
// release last row
for k:=1 to len(::aHeaders)
cLabelName1 := "Wiersz_"+strzero(::nLiczbaWierszy,3)+"_"+strzero(k,3)
DoMethod(::cFormName,cLabelName1,"Release")
next k
::nLiczbaWierszy--
return
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
*--------------------------------------------------------------
Function TouchSystemMol( cFormName )
local nWiersz := 30
local nKolumna := 250
local nSzerokosc := 120
local nWysokosc := 70
local nPrzerwa := 20
local nRozmiarCzcionki := 14
local cNazwaCzcionki := "ARIAL"
* public nLiczbaWierszy := 5
* public nLiczbaKolumn := 5
* public aStosPlansz := {}
* private cNazwaOkna := "Form_Main"
private cNazwaOkna := cFormName
* private aPozycje := {}
* private aHeaders := {'Towar','Nazwa','Ilość'}
* private aWidths := {55,95,55}
* private aJust := {0,0,1}
* private oMiniGrid
// define different sale charts
// array contains coordinates of buttons, name of goodies or sale chart name
// T - for goods for sale
// P - for sale chart
* aPlansza1 := { { 1,1,"Zestaw"+chr(10)+"Schab","T","000100"} ,;
* { 1,2,"Zestaw"+chr(10)+"Mielony","T","000101"} ,;
* { 1,3,"Zestaw"+chr(10)+"Kurczak","T","000111"} ,;
* { 2,2,"Naleśniki","T","000102"} ,;
* { 2,3,"Pierogi","T","000103"} ,;
* { 3,1,"Surówki","P",2} ,;
* { 3,2,"Napoje","P",3} }
*
* aPlansza2 := { { 1,1, "Kapusta"+chr(10)+"biała", "T", "000201"} ,;
* { 1,2, "Kapusta"+chr(10)+"czerwona", "T", "000202"} ,;
* { 1,3, "Kapusta"+chr(10)+"MIX", "T", "000203"} ,;
* { 2,1, "Buraczki", "T", "000204"} ,;
* { 2,2, "Marchewka", "T", "000205"} ,;
* { 2,4, "Seler", "T", "000206"} }
*
* aPlansza3 := { { 1,1, "Cola 0,5l", "T", "000301"} ,;
* { 1,2, "Pepsi 0,2l", "T", "000302"} ,;
* { 1,3, "Jurajska 0,5l", "T", "000303"} ,;
* { 2,1, "Tymbark"+chr(10)+"jabłko"+chr(10)+"mięta", "T", "000304"} ,;
* { 2,3, "Kawa express", "T", "000305"} ,;
* { 3,3, "Herbata", "T", "000306"} }
* DEFINE WINDOW &cNazwaOkna ;
* AT 0,0 ;
* WIDTH 1000 HEIGHT 590 ;
* TITLE 'System sprzedaży dotykowej' ;
* NOMINIMIZE ;
* NOMAXIMIZE ;
* backcolor {225,255,200};
* NOSIZE ;
* NOSYSMENU ;
* MAIN
/*
define grid G_Pozycje
row 10
col 10
WIDTH 230
HEIGHT 100
HEADERS {'Towar','Nazwa','Ilość'}
WIDTHS {60,100, 60}
fontname "ARIAL"
fontsize 8
ITEMS NIL
OnQueryData OdswiezPozycje()
ONDBLCLICK PoprawPozycje(this.Value)
VIRTUAL .t.
end grid
*/
oMiniGrid := MiniGrid():New( SUBSTR( cFormName, 6, 3 ), 30, 10, 230, 500, 250, 5000, aHeaders, aWidths, aJust)
for w := 1 to nLiczbaWierszy
for k:= 1 to nLiczbaKolumn
cNazwaPrzycisku := "Przycisk_"+str(w,1)+str(k,1)
bBlock := "WykonajAkcjePrzycisku(" + str(w,1) + "," +str(k,1) + ")"
@ nWiersz + (w-1)*(nWysokosc+nPrzerwa), nKolumna + (k-1)*(nSzerokosc +nPrzerwa) LABEL &cNazwaPrzycisku ;
width nSzerokosc height nWysokosc ;
VALUE cNazwaPrzycisku;
font cNazwaCzcionki size nRozmiarCzcionki centeralign FONTCOLOR WHITE;
action &bBlock ;
backcolor BLUE
next k
next w
* SET CONTROL Przycisk_11 OF &cNazwaOkna STATICEDGE
* SET CONTROL Przycisk_12 OF &cNazwaOkna CLIENTEDGE
* SET CONTROL Przycisk_13 OF &cNazwaOkna NOTEDGE
@ nWiersz + nLiczbaWierszy*(nWysokosc+nPrzerwa), nKolumna+ (nLiczbaKolumn-1)*(nSzerokosc +nPrzerwa) LABEL L_Powrot ;
width nSzerokosc height nWysokosc ;
VALUE chr(10)+"Powrót";
font cNazwaCzcionki size nRozmiarCzcionki centeralign FONTCOLOR WHITE;
action ZamknijPlanszeSprzedazy() ;
backcolor RED
* END WINDOW
* CENTER WINDOW &cNazwaOkna
ZdefiniujPlanszeSprzedazy(aPlansza1)
* ON KEY ALT+Q OF &cNazwaOkna ACTION DoMethod(cNazwaOkna , "Release")
* ON KEY ESCAPE OF &cNazwaOkna ACTION DoMethod(cNazwaOkna , "Release")
* ACTIVATE WINDOW &cNazwaOkna
Return
*-----------------------------
function WykonajAkcjePrzycisku
param w,k
local i, j
local aPlansza
if (i:= len(aStosPlansz)) == 0
MsgStop("Jesteś na najwyższym poziomie")
return .f.
endif
aPlansza := aStosPlansz[i]
j := ascan(aPlansza, {|a| a[1] == w .and. a[2] == k})
if j>0
cAkcja := aPlansza[j,4]
if cAkcja =="T"
cTowar := aPlansza[j,5]
cNazwa := aPlansza[j,3]
DodajPozycjeSprzedazy({cTowar, cNazwa, 1, 0})
elseif cAkcja == "P"
//definiujemy planszę sprzedaży
nNrPlanszy := aPlansza[j,5]
cNazwaPlanszy := "aPlansza"+alltrim(str(nNrPlanszy))
ZdefiniujPlanszeSprzedazy(&cNazwaPlanszy)
endif
endif
return
*-----------------------------------------------------------------------------*
function ZdefiniujPlanszeSprzedazy
param aPlansza
local i
local cNazwaPrzycisku
local cNapis
local aBackColor
aAdd(aStosPlansz, aclone(aPlansza))
UkryjPrzyciski()
for i := 1 to len(aPlansza)
w := aPlansza[i,1]
k := aPlansza[i,2]
cNazwaPrzycisku := "Przycisk_"+str(w,1)+str(k,1)
cNapis := aPlansza[i,3]
SetProperty(cNazwaOkna, cNazwaPrzycisku,"VISIBLE",.t.)
SetProperty(cNazwaOkna, cNazwaPrzycisku,"VALUE", cNapis)
// change color of button for another sale chart
aBackColor := if(aPlansza[i,4]=="T", {0,0,128}, {0,128,0})
SetProperty(cNazwaOkna, cNazwaPrzycisku,"BackColor",aBackColor)
next i
return
*-----------------------------------------------------------------------------*
function UkryjPrzyciski
local w, k
local cNazwaPrzycisku
// ukrywamy wszystkie przyciski
for w:=1 to nLiczbaWierszy
for k:=1 to nLiczbaKolumn
cNazwaPrzycisku := "Przycisk_"+str(w,1)+str(k,1)
SetProperty(cNazwaOkna, cNazwaPrzycisku,"VISIBLE",.f.)
next k
next w
return
*-----------------------------------------------------------------------------*
function ZamknijPlanszeSprzedazy
local i
if (i:=len(aStosPlansz))>1
UkryjPrzyciski()
ZdefiniujPlanszeSprzedazy(aStosPlansz[i-1])
aSize(aStosPlansz, i-1)
else
if MsgYesNo("Zamknąć planszę sprzedaży?")
DoMethod(cNazwaOkna,"RELEASE")
endif
endif
return
*-----------------------------------------------------------------------------*
function OdswiezPozycje
local nRow, nCol
nRow := This.QueryRowIndex
nCol := This.QueryColIndex
if nRow>0 .and. nCol >0
if nRow > len(aPozycje)
This.QueryData := ""
else
This.QueryData := aPozycje[nRow,nCol]
endif
endif
return
*-----------------------------------------------------------------------------*
function DodajPozycjeSprzedazy
param aWiersz
local cTowar := aWiersz[1]
local i
i := aScan(aPozycje, {|a| a[1] == cTowar} )
if i>0
aPozycje[i,3] += 1
oMiniGrid:ChangeRow(i)
else
aAdd(aPozycje, aclone(aWiersz))
oMiniGrid:AddRow(aWiersz)
endif
//SetProperty(cNazwaOkna, "G_Pozycje","ItemCount",0)
//SetProperty(cNazwaOkna, "G_Pozycje","ItemCount",len(aPozycje))
return
*--------------------
function PoprawPozycje
param nPozycja
local aKolorTla := {225,255,255}
local aNazwyPrzyciskow := {{"7","8","9"} ,{"4","5","6"},{"1","2","3"},{"0",".","*"},{"CE","C","ENTER"}}
local nWiersz := 40
local nKolumna := 200
local nSzerokosc := 55
local nWysokosc := 50
local nPrzerwa := 10
local nRozmiarCzcionki := 14
local cNazwaCzcionki := "ARIAL"
local nLiczbaWierszy := 5
local nLiczbaKolumn := 3
private cBiezacaKontrolka := ""
private cBiezacyTekst := ""
private cIloscTekst := ""
private cCenaTekst := ""
private nRet := .f.
if nPozycja<1
return .f.
endif
DEFINE WINDOW OknoPoprawPozycje ;
AT 0,0 ;
WIDTH nKolumna + 40 + nLiczbaKolumn*(nSzerokosc+nPrzerwa) HEIGHT nWiersz + 40 + nLiczbaWierszy*(nWysokosc+nPrzerwa) ;
TITLE STRTRAN(aPozycje[nPozycja,2],CHR(10)," " ) ;
MODAL ;
backcolor aKolorTla;
NOSIZE NOSYSMENU
@ 10,10 LABEL L_Towar ;
width 300 height 18;
VALUE STRTRAN(aPozycje[nPozycja,2],CHR(10)," " ) ;
font "ARIAL" size 12 CENTERALIGN FONTCOLOR YELLOW backcolor RED
@ 40, 10 LABEL L_Ilosc ;
width 78 height 18 ;
Value "Ilość" ;
backcolor aKolorTla;
font "ARIAL" size 12 rightalign
@ 40, 90 TEXTBOX T_ILOSC ;
width 80 height 24 ;
Value aPozycje[nPozycja,3] ;
font "ARIAL" size 12;
NUMERIC INPUTMASK "99.9" ;
ON GOTFOCUS {|| cBiezacaKontrolka := this.name, CBiezacyTekst := "cIloscTekst"} ;
rightalign
@ 70, 10 LABEL L_Cena ;
width 78 height 18 ;
Value "Cena" ;
backcolor aKolorTla;
font "ARIAL" size 12 rightalign
@ 70, 90 TEXTBOX T_CENA ;
width 80 height 24 ;
Value aPozycje[nPozycja,4] ;
font "ARIAL" size 12;
NUMERIC INPUTMASK "9999.99" ;
ON GOTFOCUS {||cBiezacaKontrolka := this.name, CBiezacyTekst := "cCenaTekst"} ;
rightalign
@ 120, 90 LABEL L_OK ;
width 80 height 50 ;
Value "OK" ;
backcolor GREEN;
font "ARIAL" size 14 FONTCOLOR WHITE;
CENTERALIGN ;
ACTION ZapiszPoprawePozycji()
@ 190, 90 LABEL L_UsunPozycje ;
width 80 height 50 ;
Value "Usuń pozycję" ;
backcolor BLACK;
font "ARIAL" size 14 FONTCOLOR ORANGE;
CENTERALIGN ;
ACTION UsunPozycje()
aNazwyPrzyciskow := {{"7","8","9"} ,{"4","5","6"},{"1","2","3"},{"0",".","Enter"},{"CE","C","Anuluj"}}
aWartosciPrzyciskow := {{"7","8","9"} ,{"4","5","6"},{"1","2","3"},{"0",".","ENTER"},{"CE","C","ANULUJ"}}
aKoloryPrzyciskow := { {BLUE,BLUE,BLUE},;
{BLUE,BLUE,BLUE},;
{BLUE,BLUE,BLUE},;
{BLUE,BLUE,GREEN},;
{RED,RED,RED}}
for w := 1 to len(aNazwyPrzyciskow)
for k:= 1 to len(aNazwyPrzyciskow[1])
cNazwaPrzycisku := "Przycisk_"+str(w,1)+str(k,1)
if !empty(aNazwyPrzyciskow[w,k])
bBlock := "WykonajAkcjePrzyciskuKlawiaturowego(" + str(w,1) + "," +str(k,1) + ")"
@ nWiersz + (w-1)*(nWysokosc+nPrzerwa), nKolumna + (k-1)*(nSzerokosc +nPrzerwa) LABEL &cNazwaPrzycisku ;
width nSzerokosc height nWysokosc ;
VALUE chr(10) + aNazwyPrzyciskow[w,k];
font cNazwaCzcionki size nRozmiarCzcionki centeralign FONTCOLOR WHITE;
action &bBlock ;
backcolor aKoloryPrzyciskow[w,k]
endif
next k
next w
END WINDOW
OknoPoprawPozycje.L_Towar.Width := OknoPoprawPozycje.Width - 20
CENTER WINDOW OknoPoprawPozycje
ON KEY ESCAPE OF OknoPoprawPozycje ACTION OknoPoprawPozycje.Release
ACTIVATE WINDOW OknoPoprawPozycje
RETURN nRet
*---------------------
function WykonajAkcjePrzyciskuKlawiaturowego
param w,k
local cWartosc := ""
cWartosc := &cBiezacyTekst
do case
case aWartosciPrzyciskow[w,k] == "C"
cWartosc := ""
case aWartosciPrzyciskow[w,k] == "CE"
if len(cWartosc)>0
cWartosc := left(cWartosc,len(cWartosc)-1)
endif
case aWartosciPrzyciskow[w,k] == "ENTER"
if cBiezacaKontrolka == "T_ILOSC"
DoMethod(thisWindow.Name, "T_CENA", "SETFOCUS")
return
else
// zamykamy okienko
ZapiszPoprawePozycji()
return
endif
case aWartosciPrzyciskow[w,k] == "ANULUJ"
OknoPoprawPozycje.Release
return
otherwise
cWartosc += aWartosciPrzyciskow[w,k]
end case
hPole := GetControlHandle (cBiezacaKontrolka,thisWindow.Name)
SetWindowText(hPole, cWartosc)
SetProperty(thisWindow.Name,cBiezacaKontrolka,"Value",val(cWartosc))
SetProperty(thisWindow.Name,cBiezacaKontrolka,"CaretPos",len(cWartosc))
&cBiezacyTekst := cWartosc
return
*-------------------
function ZapiszPoprawePozycji
aPozycje[nPozycja, 3] := OknoPoprawPozycje.T_Ilosc.Value
aPozycje[nPozycja, 4] := OknoPoprawPozycje.T_Cena.Value
OknoPoprawPozycje.Release
nRet := .t.
return
*---------------------
function UsunPozycje
if MsgYesNo("Potwierdź usunięcie pozycji")
aDel(aPozycje, nPozycja)
aSize(aPozycje, len(aPozycje)-1)
oMiniGrid:DeleteRow(nPozycja)
//SetProperty(cNazwaOkna, "G_Pozycje","ItemCount",len(aPozycje))
OknoPoprawPozycje.Release
endif
return
*----------------------
function PoprawPozycjeMiniGrid
param nPozycja
local k
local cLabelName
if PoprawPozycje(nPozycja)
oMiniGrid:ChangeRow(nPozycja)
endif
return