Page 1 of 1

SetBtnGet en xBrowse

PostPosted: Thu Nov 05, 2015 6:42 pm
by acuellar
Amigos

El SetBrnGet es de TSBrowse, como es en xBrowse?

Que sirve para poder pulsar una tecla asignada para realizar una acción cuando estamos usando bEditBlock, además permite colocar una imagen

Gracias por la ayuda.

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Thu Nov 05, 2015 7:18 pm
by karinha

Re: SetBtnGet en xBrowse

PostPosted: Thu Nov 05, 2015 7:52 pm
by acuellar
Gracias João

Revisé todos los parámetros y parece que no tiene uno que cumpla esa función.

Esperemos que dice el master RAO

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Thu Nov 05, 2015 8:10 pm
by Antonio Linares
Adhemar,

Lo que necesitas es asignarle una imagen al botón ?

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 1:03 am
by acuellar
Antonio

Lo que necesito es que el cuadro que muestra el bEditBlock poner una imagen con F2 y al pulsar F2 me ejecute un función que muestre otro browse donde pueda elegir un registro.

Gracias,

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 1:09 am
by acuellar
A propósito del TSBrowse alguien sabe del maestro Manuel Mercado de México. Todo un master.

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 3:27 pm
by acuellar
He encontrado éste ejemplo:
Quiero que al pulsar F2 ó click en el cuadrito muestre el otro browse para elegir el Item.

Code: Select all  Expand view

#include "fivewin.ch"

REQUEST DBFCDX

function Main()
   local oWnd, oBar, oFont
   Private lPued:=.T.
   
   RDDSetDefault( "DBFCDX" )
   SET DELETED ON

   if ! File( 'TestTrn.Dbf' )
      CreateTestDbf()
   endif

   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE WINDOW oWnd MDI
   oWnd:SetFont( oFont )

   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007
   SET MESSAGE OF oWnd TO '' 2007

   DEFINE BUTTON OF oBar PROMPT "XBrowse" ACTION XbrAppend( This )
   DEFINE BUTTON OF oBar PROMPT "Quit" ACTION oWnd:End()

   ACTIVATE WINDOW oWnd
   RELEASE FONT oFont

return 0

static function XbrAppend( oBtn )

   local oWnd, oBrw

   oBtn:Disable()

   USE TESTTRN NEW ALIAS TRN EXCLUSIVE

   DEFINE WINDOW oWnd MDICHILD OF WndMain()

   @ 0,0 XBROWSE oBrw OF oWnd ;
      COLUMNS 'Code', 'Item', 'Rate', 'Quantity' ;
      ALIAS 'TRN' CELL LINES FASTEDIT

   oBrw:Amount    := { || oBrw:Rate:Value * oBrw:Quantity:Value }

   WITH OBJECT oBrw
      :Cargo            := 0
      WITH OBJECT :Code
         :nEditType     := 5 //EDIT_BUTTON
         :bEditBlock    := { || SelectItem( oBrw ) }
      END

      :Quantity:nEditType  := EDIT_GET
      :bPastEof         := { || (oBrw:cAlias)->( AppendRec( oBrw ) ) }
      :bChange          := { || (oBrw:cAlias)->( CheckAppend( oBrw ) ) }
   END

   oBrw:CreateFromCode()
   oWnd:oClient   := oBrw

   oWnd:bPostEnd := { || TRN->( DbCloseArea() ), oBtn:Enable() }

   ACTIVATE WINDOW oWnd ON INIT oBrw:SetFocus() ;
      VALID CheckAppend( oBrw, .t. )

return nil

static function AppendRec( oBrw )

   if oBrw:Cargo == 0  // not in append mode
      APPEND BLANK
      GO BOTTOM
      oBrw:Cargo  := RecNo()
      oBrw:Refresh()
      oBrw:GoLeftMost()
      oBrw:Code:Edit()
   endif

return nil

static function CheckAppend( oBrw, lExit )

   local nRecNo   := RecNo()

   DEFAULT lExit  := .f.

   if oBrw:Cargo > 0 .and. ( lExit .or. oBrw:Cargo != nRecNo )
      GOTO oBrw:Cargo
      DELETE
      oBrw:Cargo  := 0
      if ! lExit
         GOTO nRecNo
         oBrw:Refresh()
      endif
   endif
   if lExit
      PACK
   endif

return .t.

static function SelectItem( oBrw1 )

   local aItems := { { 1, "Item.1", 20 }, { 2, "Item.2", 30 }, { 3, "Item.3", 40 } }
   local nRet     := oBrw1:Code:Value

   XBROWSER aItems ;
      SETUP ( oBrw:cHeaders := { "Code", "Item", "Rate" } ) ;
      SELECT ( nRet := oBrw:aRow[ 1 ], ;
               oBrw1:Item:Value := oBrw:aRow[ 2 ], ;
               oBrw1:Rate:Value := oBrw:aRow[ 3 ], ;
               oBrw1:Cargo  := 0, ;
               oBrw1:nColSel := 4, ;
               oBrw1:Refresh() )

return nRet

//----------------------------------------------------------------------------//

static function CreateTestDbf()

   local aCols    := { ;
      { "CODE",      "N",  4, 0  }, ;
      { "ITEM",      "C", 20, 0  }, ;
      { "RATE",      "N",  6, 2  }, ;
      { "QUANTITY",  "N",  4, 0  }  }

   DBCREATE( "TESTTRN", aCols )

   USE TESTTRN EXCLUSIVE
   APPEND BLANK
   FIELD->CODE       := 1
   FIELD->ITEM       := "Item.1"
   FIELD->RATE       := 20
   FIELD->QUANTITY   := 3
   CLOSE TESTTRN

return nil

 


Gracias por la ayuda.

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 5:11 pm
by Antonio Linares
Adhemar,

El ejemplo que has publicado ya lo hace. Que le falta a ese ejemplo ?

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 5:24 pm
by acuellar
Antonio

El ejemplo sólo funciona dando click en el cuadrito.
Quiero que me permita pulsar F2 y en lo posible poner una imagen.

Image

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 6:40 pm
by Antonio Linares
Adhemar,

Prueba a añadir esta línea:

oBrw:bKeyDown = { | nKey | If( oBrw:nColSel == 1 .and. nKey == VK_F2, oBrw:SelectedCol():RunBtnAction(), ) }

aquí:

Code: Select all  Expand view
static function XbrAppend( oBtn )

   local oWnd, oBrw

   oBtn:Disable()

   USE TESTTRN NEW ALIAS TRN EXCLUSIVE

   DEFINE WINDOW oWnd MDICHILD OF WndMain()

   @ 0,0 XBROWSE oBrw OF oWnd ;
      COLUMNS 'Code', 'Item', 'Rate', 'Quantity' ;
      ALIAS 'TRN' CELL LINES FASTEDIT

   oBrw:Amount    := { || oBrw:Rate:Value * oBrw:Quantity:Value }

   WITH OBJECT oBrw
      :Cargo            := 0
      WITH OBJECT :Code
         :nEditType     := 5 //EDIT_BUTTON
         :bEditBlock    := { || SelectItem( oBrw ) }
      END

      :Quantity:nEditType  := EDIT_GET
      :bPastEof         := { || (oBrw:cAlias)->( AppendRec( oBrw ) ) }
      :bChange          := { || (oBrw:cAlias)->( CheckAppend( oBrw ) ) }
   END

   oBrw:bKeyDown = { | nKey | If( oBrw:nColSel == 1 .and. nKey == VK_F2, oBrw:SelectedCol():RunBtnAction(), ) }

   oBrw:CreateFromCode()
   oWnd:oClient   := oBrw

   oWnd:bPostEnd := { || TRN->( DbCloseArea() ), oBtn:Enable() }

   ACTIVATE WINDOW oWnd ON INIT oBrw:SetFocus() ;
      VALID CheckAppend( oBrw, .t. )

return nil

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 7:07 pm
by acuellar
Perfecto.

Gracias Antonio

Si es posible faltaría poder colocar una imagen.

Saludos,

Adhemar

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 7:53 pm
by MGA
oBrw:aCols[1]:AddResource('LUPA')
oBrw:aCols[1]:nBtnBmp := 1
oBrw:aCols[1]:lBtnTransparent:= .f.

Re: SetBtnGet en xBrowse

PostPosted: Fri Nov 06, 2015 8:30 pm
by acuellar
Gracias SGS

Funciona.


Saludos,

Adhemar