*Librería: "myclass.vcx"
*Clase: "txtprecio"
DEFINE CLASS txtprecio AS textbox
*< CLASSDATA: Baseclass="textbox" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod>
*p: previus_value
*</DefinedPropArrayMethod>
Alignment = 3
BackStyle = 0
BorderStyle = 0
FontSize = 8
Format = "Z"
Height = 23
InputMask = "999,999.99"
Name = "txtprecio"
previus_value = 0
Value = 0
Width = 100
PROCEDURE LostFocus
LOCAL lcProcedure
IF this.Value # this.previus_value ;
AND !EMPTY(this.Comment)
lcProcedure=TRIM(this.Comment)
IF PEMSTATUS(thisform,lcProcedure,5)
thisform.&lcProcedure()
ENDIF
ENDIF
ENDPROC
PROCEDURE When
this.previus_value=this.Value
ENDPROC
ENDDEFINE
* Agregando la clase a un control grid
PROCEDURE get_grid
LOCAL i,lnWidth,lnRows
lnWidth = 0
lnRows = 15
thisform.NewObject("grilla","grid")
WITH this.grilla
.top=60
.left=3
.recordsource="cur_Facture"
.deletemark=.f.
.columnCount=4
.Setall("fontsize",8,"Column")
.Setall("Readonly",.t.,"Column")
.Setall("Fontsize",8,"Header")
.Scrollbars = 2
.gridlinecolor=RGB(220,228,224)
WITH .columns(1)
.ControlSource='cur_Facture.producto'
.readonly=.f.
.width=200
ENDWITH
WITH .columns(2)
.ControlSource='cur_facture.cantidad'
.width=80
.format="Z"
.Inputmask="999,999.99"
.readonly=.f.
ENDWITH
WITH .columns(3)
.ControlSource='cur_facture.precio'
IF NOT PEMSTATUS(this.grilla.columns(3),"txtPrecio",5)
.newobject("txtPrecio","txtPrecio","myClass.vcx")
.CurrentControl="txtprecio"
ENDIF
.txtprecio.comment="Get_Sumas"
.width=80
.format="Z"
.Inputmask="999,999.99"
.readonly=.f.
ENDWITH
WITH .columns(4)
.ControlSource='cur_facture.Importe'
.width=80
.format="Z"
.Inputmask="9,999,999.99"
ENDWITH
FOR i=1 TO .columnCount
lnWidth = lnWidth + .columns(i).width
NEXT
.Width = lnWidth + .columnCount-1 + SYSMETRIC(7) + 1 ;
+ IIF(.recordmark,10,0) + 4
.Height = lnRows * .RowHeight + 2
.visible=.t.
ENDWITH
WITH THIS
.TEXT1.WIDTH=80
.text1.TOP=.Grilla.top+.grilla.height
.text1.Left=lnWidth + .grilla.left ;
+ IIF(.grilla.recordmark,10,0) - .text1.Width + 2
ENDWITH
ENDPROC
PROCEDURE get_sumas
LOCAL lnREgis,lnSuma
lnSuma=0
SELECT cur_Facture
lnREgis=RECNO()
SCAN
replace importe WITH ROUND(cantidad * precio , 2)
lnsuma = lnSuma + importe
ENDSCAN
IF lnREgis > 0
GO lnREgis
ELSE
GO top
ENDIF
this.text1.Value=lnSuma
ENDPROC