Se me ha encargado realizar un módulo para cubicar el almacén de la empresa. Se me pide que represente cada espacio de almacenamiento del almacén en pantalla asi que escribí esto:
Code: Select all
#include <hmg.ch>
FUNCTION MAIN()
PUBLIC nScrW := GetDesktopWidth()
PUBLIC nScrH := GetDesktopHeight() - 30
PUBLIC nSpcW := INT( nScrW / 10 )
PUBLIC nSpcH := INT( nScrH / 7 )
PUBLIC nSpcX := INT( nSpcH / 4 )
PUBLIC aSpcs := {'Spc01','Spc02','Spc03','Spc04'}
PUBLIC aCoos := { {10,10},{10+nSpcH,10},{10+(nSpcH*2),10},{10+(nSpcH*3),10} }
PUBLIC aUbis := {'D1A1','D1A2','D1B1','D1B2'}
DEFINE WINDOW Win_Main ;
AT 0 , 0 ;
WIDTH nScrW HEIGHT nScrH ;
TITLE "Almacenes" ;
FONT "Arial" SIZE 9 ;
MAIN
FOR nSpcs = 1 TO LEN(aSpcs)
cSpE := aSpcs[nSpcs]+'E'
cSpU := aSpcs[nSpcs]+'U'
cSpD := aSpcs[nSpcs]+'D'
cSpC := aSpcs[nSpcs]+'C'
@aCoos[nSpcs,1],aCoos[nSpcs,2] LABEL &cSpE ;
WIDTH nSpcW ;
HEIGHT nSpcX ;
VALUE aUbis[nSpcs] ;
ACTION RackClick() ;
FONTCOLOR {255,255,000} ;
BACKCOLOR {105,105,105} ;
CENTERALIGN
@aCoos[nSpcs,1]+nSpcX,aCoos[nSpcs,2] LABEL &cSpU ;
WIDTH nSpcW ;
HEIGHT nSpcX ;
FONTCOLOR {255,255,000} ;
BACKCOLOR {255,000,000} ;
CENTERALIGN
@aCoos[nSpcs,1]+(nSpcX*2),aCoos[nSpcs,2] LABEL &cSpD ;
WIDTH nSpcW ;
HEIGHT nSpcX ;
FONTCOLOR {255,255,255} ;
BACKCOLOR {038,139,034} ;
CENTERALIGN
@aCoos[nSpcs,1]+(nSpcX*3),aCoos[nSpcs,2] LABEL &cSpC ;
WIDTH nSpcW ;
HEIGHT nSpcX ;
FONTCOLOR {255,255,000} ;
BACKCOLOR {105,105,105} ;
CENTERALIGN
NEXT
END WINDOW
ACTIVATE WINDOW Win_Main
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC AlmacenIniciar()
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC RackClick()
LOCAL cEspacio := This.Value
LOCAL nEspacio := ASCAN( aUbis , cEspacio )
LOCAL cControl := aSpcs[nEspacio]+'U'
MsgInfo( 'Espacio: '+cEspacio+chr(13)+'Control: '+cControl )
cLabel := 'Win_Main.'+cControl+'.Value'
&cLabel := '25m3'
RETURN
Mucho agradeceré su ayuda.
Reciban mis cordiales saludos.