No logro hacer que el cursor pueda editar la celda de columna 2, 3, 4
Q estoy haciendo mal?
Gracias de antemano
- Code: Select all Expand view RUN
FUNCTION Facturacion()
LOCAL aDatos, ;
nLimite := 0
LOCAL oDlg, ;
oBrw, ;
aFuentes:= array( 2 )
DEFINE FONT aFuente[2] name "Square721 BT" size 0, -13
// Array de línea en Factura
nLimite:= 15
aDatos:= Array( nLimite, 5 )
FOR nItem:= 1 TO nLimite
aDatos[nItem, 1] := space(35) // Descripción
aDatos[nItem, 2] := 0.00 // Cantidad
aDatos[nItem, 3] := 0.00 // Precio Final
aDatos[nItem, 4] := 0.00 // % de Descuento de Linea
aDatos[nItem, 5] := 0.00 // Total de Linea
NEXT nItem
//----------( Dialogo Factura )----------
DEFINE DIALOG oDlg RESOURCE "FACTURA"
REDEFINE LISTBOX oBrw ;
FIELDS "";
sizes 300, 80, 80, 80, 80 ;
ID 110;
OF oDlg;
FONT aFuente[2];
UPDATE;
colors CLR_BLACK, CLR_2 ;
oBrw:bLogicLen := {|| LEN( aDatos ) }
oBrw:SetArray( aDatos )
oBrw:nHeaderHeight := 20
oBrw:nLineHeight := 24
oBrw:lCellStyle := .T.
oBrw:lAutoEdit := .T.
oBrw:ladjlastcol := .T.
oBrw:nLineStyle := 2
oBrw:nHeaderStyle := 2
oBrw:aHeaders := { "Descripcion", "Cantidad", "Precio", "% Dto.", "Total" }
oBrw:bLine := {|| { aDatos[obrw:nAt, 1], aDatos[obrw:nAt, 2],;
aDatos[obrw:nAt, 3], aDatos[obrw:nAt, 4],;
aDatos[obrw:nAt, 5] } }
// nStyle:
// 0 = Celdas normales
// 3 = celda con el foco
// 1 = Cabecera
// 2 = footer
oBrw:bFont := { | nRow, nCol, nStyle | ;
IF ( nStyle == 0 .or. nStyle == 3, afuente[2]:hFont, NIL ) }
oBrw:aHJustify := { 2, 2, 2, 2, 2 }
oBrw:aJustify := { 2, .F. }
obrw:bBkColor := { | nRow, nCol, nStyle | IF( nStyle = 0, if( nRow % 2==0, CLR_1 , CLR_2 ), ) }
//----------( Estos van juntos )----------
oBrw:bKeyDown := { | nTecla | IF ( nTecla != VK_ESCAPE, ( oBrw:Edit() ), ) }
oBrw:bEdit:= { | nCol, cBuffer, lFirstEdit | ;
EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos ) }
//------------------------------------------
ACTIVATE DIALOG oDlg CENTERED
RETURN ( NIL )
//------------------------------------------------------------------------------
FUNCTION EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos )
LOCAL bValid, ;
lValue:= .T. , ;
aResultados
? nCol // Aca siempre me da 1, nunca 2 ni 3
DO CASE
CASE nCol = 1
oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )
CASE nCol = 2
oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )
ENDCASE
IF lValue
Do Case
Case obrw:nLastKey == VK_UP
return If( !GetKeyState(VK_SHIFT), -3, -2 )
Case obrw:nLastKey == VK_DOWN
return If( !GetKeyState(VK_SHIFT), 3, 2 )
Case obrw:nLastKey == VK_TAB
return If( GetKeyState(VK_SHIFT), -1, 1 )
EndCase
ENDIF
RETURN lValue
//------------------------------------------------------------------------------