FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour WHEN en xBrowse
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
WHEN en xBrowse
Posted: Wed Jun 13, 2018 08:38 PM
Estimados

Tengo dos columnas con GET_EDIT y quiero que s贸lo una permita datos por fila.
Code (fw): Select all Collapse
      oCol:=oBrw1:AddCol()
      oCol:cEditPicture   := '@Z 999,999.99'
      oCol:bEditValue  := { || Nuevo->DEBE }
      oCol:nHeadStrAlign := AL_CENTER
      oCol:cHeader   := "D E B E"
      oCol:nWidth:=70
      oCol:nEditType :=EDIT_GET 
      oCol:bOnPostEdit := {|o, v, n| Nuevo->debe:=v_}
      oCol:nFooterType := AGGR_SUM 
      
      oCol:=oBrw1:AddCol()
      oCol:cEditPicture   := '@Z 999,999.99'
      oCol:bEditValue  := { || Nuevo->HABER }
      oCol:nHeadStrAlign := AL_CENTER
      oCol:cHeader   := "H A B E R"
      oCol:nWidth:=70
      oCol:nEditType :=EDIT_GET 
      oCol:bOnPostEdit := {|o, v, n| Nuevo->haber:=v }
      oCol:nFooterType := AGGR_SUM


Aparte rengo un problema tambi茅n en xBrowse Con bEditBlock Habilitando la pulsaci贸n de una tecla en 茅ste caso F2
Code (fw): Select all Collapse
    oCol:=oBrw1:AddCol()
      oCol:cEditPicture   := "@!"
      oCol:bStrData  := { || NUEVO->NROCTA }
      oCol:nHeadStrAlign := AL_CENTER
      oCol:cHeader   := "Cuenta"
      oCol:nWidth:=78
      oCol:AddResource('B-F2')
      oCol:nBtnBmp:= 1
      oCol:nEditType:= 5 
      oCol:bEditBlock:= { |nRow,nCol,oCol| (BuscaCta(nRow,nCol)) } 
      oCol:bOnPostEdit := {|o, v, n| If(!lbdr,Nuevo->NROCTA:=v, ) }
   .....
     oBrw1:bKeyDown = { | nKey |If( oBrw1:nColSel == 1 .and. nKey == VK_F2, (oBrw1:SelectedCol():RunBtnAction()), )} //Con 茅sto al pulsar F2 va a la funci贸n BuscaCta()

Aqu铆 la funci贸n BuscaCta()
Code (fw): Select all Collapse
Function BuscaCta(nRow,nCol)
   Local oVar,oDlgB, oBrw3, lOk:= .F.

    lbdr:=.T.
   DbSelectArea("Cuentas")
   dbGotop()
     
   DEFINE DIALOG oDlgB FROM 0,0 TO 203,260 PIXEL STYLE nOr( WS_VISIBLE, WS_POPUP ) 
     
    @0,0 xBrowse oBrw3 Of oDlgB AUTOSORT ALIAS "CUENTAS"
    oBrw3:nMarqueeStyle:=MARQSTYLE_HIGHLROW
    oBrw3:lHScroll:= .f.
    oBrw3:nRowDividerStyle:= 0
   oBrw3:lRecordSelector := .f.
   oBrw3:bLDblClick:={ || ( SysWait(.2),__KeyBoard(Chr(13)) ) }
          
   oCol:=oBrw3:AddCol()
    oCol:bStrData := { || CUENTAS->CTA_NRO }
    oCol:cHeader  := "NRO"
    oCol:nWidth:=75
  
    oCol:=oBrw3:AddCol()
    oCol:bStrData := { || CUENTAS->CTA_DES }
    oCol:cHeader  := "CUENTA"
     oCol:nWidth:=235
  
    oBrw3:CreateFromCode()
    
    @1,41 GET oBrw3:oSeek VAR oBrw3:cSeek SIZE 45,8 PIXEL OF oDlgB PICTURE "@!" UPDATE READONLY 
   
    oBrw3:bKeyDown:= { | nKey | iif(nKey=VK_RETURN,(lOk:=.T.,oBrw3:End(),oDlgB:End()), ) }
    
    ACTIVATE DIALOG oDlgB ON INIT (oDlgB:Move(nRow+320,378),oBrw3:Move(0,0,oDlgB:nWidth(),oDlgB:nHeight()));
                 VALID ( iif( lOk, (Nuevo->NROCTA:=CUENTAS->CTA_NRO), ),.T. ) 
Return Nil

Si doy clip al bot贸n del bEditBlock todo funciona perfecto, el problema es cuando pulso F2, me muestra el Browse de BuscaCta pero no funciona la flecha hacia abajo lo que al parecer se ha ubicado al final, porque al pulsar flecha hacia arriba me muestra el 煤ltimo.

Gracias por la ayuda.
Saludos,



Adhemar C.
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: WHEN en xBrowse
Posted: Thu Jun 14, 2018 01:08 PM

Estimados

Lo de bEditBlock lo solucion茅 pasando la base a un Array,

s贸lo me falta condicionar las columnas.

Gracias

Saludos,



Adhemar C.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: WHEN en xBrowse
Posted: Thu Jun 14, 2018 03:34 PM
acuellar wrote:Estimados

Lo de bEditBlock lo solucion茅 pasando la base a un Array,

s贸lo me falta condicionar las columnas.

Gracias



Saludos... ya probastes :bEditWhen := {|| !EMPTY( aItems[oBrw:nArrayAt, 2] ) }, gracias... :-)

Code (fw): Select all Collapse
聽 聽WITH OBJECT oBrw:aCols[3]
聽 聽 聽 :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TRANS( aItems[oBrw:nArrayAt, 3],"@E 999,999.999" ) ) }
聽 聽 聽 :cHeader := "Cantidad"
聽 聽 聽 :nWidth 聽:= 60
聽 聽 聽 :cDataType := "N"
聽 聽 聽 :nDataStrAlign := AL_RIGHT
聽 聽 聽 :cEditPicture 聽:= "@E 999,999.999"
聽 聽 聽 :nFootStrAlign := AL_RIGHT
聽 聽 聽 聽 :nEditType聽 聽 聽:= EDIT_GET
聽 聽 聽 :bEditValid 聽 聽:= { | oGet, oCol | mayorqcero( oGet:value() ) }
聽 聽 聽 聽 :bOnPostEdit 聽 := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽( oCol:value := xVal ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽totalinea( oBrw, aVar, aGet ) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽addrow( oBrw ) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:GoBottom() ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:SelectCol(1) ), ) }
聽 聽 聽 :bEditWhen 聽 := {|| !EMPTY( aItems[oBrw:nArrayAt, 2] ) }
聽 聽END WITH
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: WHEN en xBrowse
Posted: Thu Jun 14, 2018 04:42 PM
Hola Adhemar.
Corr铆jeme si estoy equivocado.
Est谩s codificando lo que en mi pais llamamos Comprobante de Diario, y lo que quieres es que no se permitan valores en el DEBE y HABER en una misma fila.

Puedes utilizar el WHEN, pero tienes el inconveniente de que si el operador introdujo un valor en el debe, y lo correcto era en el haber, para corregir esta operacion debe primero borrar el valor en el debe y despu茅s digitarlo en el campo correcto (Haber).

Yo lo hago con una funci贸n, pero esta lleva otros valores y condiciones, la cual me permite digitar en ambos campos, con la salvedad que al campo incorrecto le otorga valor 0.

Tomando el ejemplo anterior, el operador unicamente tendr铆a que digitar el valor en el haber, y automaticamente el debe queda en 0.

Intenta as:

Code (fw): Select all Collapse
 聽 聽 聽oCol:=oBrw1:AddCol()
聽 聽 聽 oCol:cEditPicture 聽 := '@Z 999,999.99'
聽 聽 聽 oCol:bEditValue 聽:= { || Nuevo->DEBE }
聽 聽 聽 oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 oCol:cHeader 聽 := "D E B E"
聽 聽 聽 oCol:nWidth:=70
聽 聽 聽 oCol:nEditType :=EDIT_GET 
[b] 聽 聽 聽oCol:bOnPostEdit := {|o, v, n| Nuevo->debe:=v, Nuevo->Haber:=0_}
[/b] 聽 聽 聽oCol:nFooterType := AGGR_SUM 
聽 聽 聽 
聽 聽 聽 oCol:=oBrw1:AddCol()
聽 聽 聽 oCol:cEditPicture 聽 := '@Z 999,999.99'
聽 聽 聽 oCol:bEditValue 聽:= { || Nuevo->HABER }
聽 聽 聽 oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 oCol:cHeader 聽 := "H A B E R"
聽 聽 聽 oCol:nWidth:=70
聽 聽 聽 oCol:nEditType :=EDIT_GET 
[b] 聽 聽 聽oCol:bOnPostEdit := {|o, v, n| Nuevo->haber:=v, Nuevo->Debe:=0 }
[/b] 聽 聽 聽oCol:nFooterType := AGGR_SUM

Intentalo y nos dices.
Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: WHEN en xBrowse
Posted: Thu Jun 14, 2018 07:30 PM

Muchas gracias estimados

oCol:bEditWhen := {|| Nuevo->HABER=0 }

Era lo que estaba buscando.

Saludos,



Adhemar C.

Continue the discussion