Mover controles con el mouse en tiempo de ejecucion
Moderator: Rathinagiri
-
- Posts: 269
- Joined: Wed Aug 13, 2008 2:35 pm
- Location: Córdoba - Argentina
Mover controles con el mouse en tiempo de ejecucion
Hola amigos :
necesito incorporar la posibilidad de mover de lugar controles label que identifican mesas de un restaurant de acuerdo a la ubicacion en el salon , por ejemplo de la misma manera que funciona nuestro IDE .
Es posible realizar esto en harbour minigui ?
Saludos
Mario Rafael Mansilla
Hello friends :
I need to incorporate the possibility of moving label controls that identify tables in a restaurant according to the location in the room, for example in the same way that our IDE works.
Is it possible to do this in harbor minigui?
regards
Mario Rafael Mansilla
necesito incorporar la posibilidad de mover de lugar controles label que identifican mesas de un restaurant de acuerdo a la ubicacion en el salon , por ejemplo de la misma manera que funciona nuestro IDE .
Es posible realizar esto en harbour minigui ?
Saludos
Mario Rafael Mansilla
Hello friends :
I need to incorporate the possibility of moving label controls that identify tables in a restaurant according to the location in the room, for example in the same way that our IDE works.
Is it possible to do this in harbor minigui?
regards
Mario Rafael Mansilla
- danielmaximiliano
- Posts: 2611
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Mover controles con el mouse en tiempo de ejecucion
Hola Mario. mi ejemplo que esta en minigui crea componentes dentro de un formulario con un control tab genera un Label y un textbox dentro, deberias averiguar la posicion del cursor para que ese control sea ubicado dentro del Form y en esa posicion crear o mover ese componente (en tu caso una mesa que se identifique con un text box, al tener el foco con un dobleclick(propiedad del componente abrir un nuevo formulario para ahi agregar la cosumision de esa mesa)
C:\MiniGUI\SAMPLES\BASIC\Tab_2
C:\MiniGUI\SAMPLES\BASIC\Tab_2
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Re: Mover controles con el mouse en tiempo de ejecucion
Revisa este ejemplo:
C:\hmg.3.4.4\SAMPLES\Miscellaneous\MoveResizeControl
C:\hmg.3.4.4\SAMPLES\Miscellaneous\MoveResizeControl
-
- Posts: 269
- Joined: Wed Aug 13, 2008 2:35 pm
- Location: Córdoba - Argentina
Re: Mover controles con el mouse en tiempo de ejecucion
Hola amigos :
excelente muchas gracias .
Saludos
Mario Mansilla
Hello friends :
excellent thank you very much .
regards
Mario Mansilla
excelente muchas gracias .
Saludos
Mario Mansilla
Hello friends :
excellent thank you very much .
regards
Mario Mansilla
Re: Mover controles con el mouse en tiempo de ejecucion
Hola
No es lo mismo, pero igual la idea puede servir...
*---------------------------------------------------------------------
It is not the same, but the idea may still serve ...
O de esta otra manera... (en base a un Mapa)
*--------------------------------------------
Or in this other way ... (based on a Map)
No es lo mismo, pero igual la idea puede servir...
*---------------------------------------------------------------------
It is not the same, but the idea may still serve ...
Code: Select all
#include <hmg.ch>
FUNCTION Main()
LOCAL nReng := 10 ; nColu := 10 ; nVeces := 1
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
cCtrlPso := "LB_Descrip"+STRZERO( nVeces, 3 )
// Capturar la Descripcion que se desee...
@ nReng,nColu TEXTBOX &cCtrlPso. OF FormMain VALUE "Libre" WIDTH 80 HEIGHT 15 FONT "Consolas" SIZE 8 ON ENTER ( ActMesa( This.Name, 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
nColu += 100
nVeces += 1
NEXT
nColu := 10
nReng += 50
NEXT
END WINDOW
CENTER WINDOW FormMain
ACTIVATE WINDOW FormMain
RETURN
FUNCTION ActMesa( cNombre, cDesc )
SetProperty( "FormMain", "LB_Descrip"+RIGHT( cNombre, 3 ), "BACKCOLOR", IF( UPPER( ALLTRIM( cDesc ) ) <> "LIBRE", YELLOW, WHITE ) )
RETURN
O de esta otra manera... (en base a un Mapa)
*--------------------------------------------
Or in this other way ... (based on a Map)
Code: Select all
#include <hmg.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"
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 )
// Capturar la Descripcion que se desee...
@ nReng,nColu TEXTBOX &cCtrlPso. OF FormMain VALUE "Libre" WIDTH 80 HEIGHT 15 FONT "Consolas" SIZE 8 ON ENTER ( ActMesa( This.Name, 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
nColu += 100
nVeces += 1
ELSE
nColu += 100
ENDIF
NEXT
nColu := 10
nReng += 50
NEXT
END WINDOW
CENTER WINDOW FormMain
ACTIVATE WINDOW FormMain
RETURN
FUNCTION ActMesa( cNombre, cDesc )
SetProperty( "FormMain", "LB_Descrip"+RIGHT( cNombre, 3 ), "BACKCOLOR", IF( UPPER( ALLTRIM( cDesc ) ) <> "LIBRE", YELLOW, WHITE ) )
RETURN
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
Re: Mover controles con el mouse en tiempo de ejecucion
Con Multiventanas ...
*---------------------------
With Multi-windows ...
*---------------------------
With Multi-windows ...
Code: Select all
#include <hmg.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"
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 ) )
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 MultiWindow
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 550 HEIGHT 350 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 ...
END WINDOW
CENTER WINDOW &ChildForm
ACTIVATE WINDOW &ChildForm
ELSE
DoMethod( ChildForm, "SetFocus")
ENDIF
RETURN
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
Re: Mover controles con el mouse en tiempo de ejecucion
Con el POS de Marek...
*----------------------------------
With Marek's POS ...
*----------------------------------
With Marek's POS ...
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
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
Re: Mover controles con el mouse en tiempo de ejecucion
Is it really based on my code? Hahaha!
I'm happy it was useful!
I'm happy it was useful!