FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour BrowseGet y tGet 25.09 [RESUELTO]
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
BrowseGet y tGet 25.09 [RESUELTO]
Posted: Fri Nov 07, 2025 12:12 PM

La clase BrowseGet de Angel Salom me ha dado muchas satisfacciones, es una alternativa a autoget que funcionaba muy bien.
Sin embargo desde esta última versión de Fivewin ( 25.09 ) me da errores:
Atribuyo estos errores a modificaciones del método keydown de la clase tGet de Fivewin.
Agradecería si pudieran revisar estos cambios recientes para ver que ocasiona este problema.

Adjunto la clase Browseget, por si habría que realizar algún cambio en ella.

Estuve mirando la clase tget, pero hay mucho que no entiendo, entre los comentarios que no están ni en español ni en inglés de los cambios y que los mismos son bastantes.

Agradecería cualquier ayuda al respecto.

BrowseGet.ch

#ifndef _BROWSEGET_CH
#define _BROWSEGET_CH

#xcommand REDEFINE BROWSEGET [ <oGet> VAR ] <uVar> ;
             [ ID <nId> ] ;
             [ <dsrc: ARRAY, HASH, DATASOURCE> <uDataSrc> ];
             [ <fil: FILTERLIST, FILTER, LIST> <uFilter> ];            

             [ <dlg: OF, WINDOW, DIALOG> <oDlg> ] ;
             [ <help:HELPID, HELP ID> <nHelpId> ] ;
             [ VALID   <ValidFunc> ]       ;
             [ <pict: PICT, PICTURE> <cPict> ] ;
             [ <color:COLOR,COLORS> <nClrFore> [,<nClrBack>] ] ;
             [ FONT <oFont> ] ;
             [ CURSOR <oCursor> ] ;
             [ MESSAGE <cMsg> ] ;
             [ <update: UPDATE> ] ;
             [ WHEN <uWhen> ] ;
             [ ON CHANGE <uChange> ] ;
             [ <readonly: READONLY, NO MODIFY> ] ;
             [ <spin: SPINNER> [ON UP <SpnUp>] [ON DOWN <SpnDn>] [MIN <Min>] [MAX <Max>] ] ;
             [ ACTION <uAction> ] ;
             [ BITMAP <cBmpName> ] ;
             [ LISTHEIGHT <nListHeight> ] ;              

             [ CUEBANNER <cCueText> ] ;
             [ [ <fld: FIELD, COLUMN> ] <xField>] ;
             [ ITEMCOLOR <nColorTxt>[,<nColorSel>] ];              

             [ LISTWIDTH <nListWidth> ];
             [ ADAPTAGET <bAdaptaGet>];
       => ;
          [ <oGet> := ] TBrowseGet():ReDefine( <nId>, bSETGET(<uVar>), <oDlg>,;
             <nHelpId>, <cPict>, <{ValidFunc}>, <nClrFore>, <nClrBack>,;
             <oFont>, <oCursor>, <cMsg>, <.update.>, <{uWhen}>,;
             [ \{|nKey,nFlags,Self| <uChange> \}], <.readonly.>,;
             <.spin.>, <{SpnUp}>, <{SpnDn}>, <{Min}>, <{Max}>, [\{|self| <uAction> \}], <cBmpName>, <"uVar">,;
             [<cCueText>], <uDataSrc>, ;
             <xField>, <nListHeight>, <nListWidth>,  <{bAdaptaGet}>,  [\{|uDataSource, cData, Self| <uFilter>\}],;
             <nColorTxt>[,<nColorSel>] )
                   

#command @ <nRow>, <nCol> BROWSEGET [ <oGet> VAR ] <uVar> ;
            [ <dsrc: ARRAY, HASH, DATASOURCE> <uDataSrc> ];
            [ <fil: FILTERLIST, FILTER, LIST> <uFilter> ];
            [ <dlg: OF, WINDOW, DIALOG> <oWnd> ] ;
            [ <pict: PICT, PICTURE> <cPict> ] ;
            [ VALID <ValidFunc> ] ;
            [ <color:COLOR,COLORS> <nClrFore> [,<nClrBack>] ] ;
            [ SIZE <nWidth>, <nHeight> ]  ;
            [ HEIGHTLIST <nListHeight> ]  ;
            [ FONT <oFont> ] ;
            [ <design: DESIGN> ] ;
            [ CURSOR <oCursor> ] ;
            [ <pixel: PIXEL> ] ;
            [ MESSAGE <cMsg> ] ;
            [ <update: UPDATE> ] ;
            [ WHEN <uWhen> ] ;
            [ <lCenter: CENTER, CENTERED> ] ;
            [ <lRight: RIGHT> ] ;
            [ ON CHANGE <uChange> ] ;
            [ <readonly: READONLY, NO MODIFY> ] ;
            [ <help:HELPID, HELP ID> <nHelpId> ] ;
            [ CUEBANNER <cCueText> ] ;            

            [ [ <fld: FIELD, COLUMN> ] <xField>] ;
            [ ITEMCOLOR <nColorTxt>[,<nColorSel>] ];        

            [ LISTWIDTH <nListWidth> ];
            [ ADAPTAGET <bAdaptaGet>];
       => ;
          [ <oGet> := ] TBrowseGet():New( <nRow>, <nCol>, bSETGET(<uVar>),;
             [<oWnd>], <nWidth>, <nHeight>, <cPict>, <{ValidFunc}>,;
             <nClrFore>, <nClrBack>, <oFont>, <.design.>,;
             <oCursor>, <.pixel.>, <cMsg>, <.update.>, <{uWhen}>,;
             <.lCenter.>, <.lRight.>,;
             [\{|nKey, nFlags, Self| <uChange>\}], <.readonly.>,;
             .f., .f., <nHelpId>,;
             .f., , , , ,,, <"uVar">, [<cCueText>], <uDataSrc>, ;
             <xField>, <nListHeight>, <nListWidth> , <{bAdaptaGet}>,  [\{|uDataSource, cData, Self| <uFilter>\}],;
             <nColorTxt>[,<nColorSel>] )
             

#endi

Browseget.prg

/* CLASS: TBrowseGet
    Permite mostrar una lista de datos desplegable para seleccionar desde un get
    Autor: Ángel Salom
*/
#include "fivewin.ch"
#include "browseget.ch"
#define COLOR_CAPTIONTEXT     9
#define BROWSEGETCODIGOCOLUMN   1
#define DEFAULT_GUI_FONT     17
#define BROWSEGETCODIGOCOLUMN   1
#define DATATYPE_HASH 256

CLASS TBrowseGet FROM TGet
     DATA nItemTextColor
     DATA nItemBackgroundColor
     DATA uDataSource
     DATA uOrgData
     DATA nDataType
     DATA xField
     DATA oList
     DATA bCreateList
     DATA nListHeight
     DATA nListWidth
     DATA bAdaptaGet

 METHOD New( ... )
 METHOD ReDefine( ... )

 METHOD CreateList( uDataSource )
 METHOD CloseList()

 METHOD KeyChar( nKey, nFlags )
 METHOD KeyDown( nKey, nFlags )

 METHOD MouseWheel( nKeys, nDelta, nXPos, nYPos )

 METHOD SetList( uDataSource, xField )   INLINE  ::uDataSource := uDataSource, ::xField := xField

 METHOD ValidList() INLINE ( HB_ISOBJECT (::oList) )

END CLASS

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

METHOD New( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, cPict, bValid,;
            nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg,;
            lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,;
            lPassword, lNoBorder, nHelpId, lSpinner,;
            bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName, cCueText,;
            uDataSrc, xField    , nListHeight,  nListWidth, bAdaptaGet, bCreateList,;
            nItemTextColor, nItemBackgroundColor  ) CLASS TBrowseGet

 DEFAULT xField      := BROWSEGETCODIGOCOLUMN
 DEFAULT nListHeight := 300
 DEFAULT nListWidth  := 500

 ::xField       := xField
 ::nListHeight  := nListHeight

 ::uDataSource  := uDataSrc
 ::bCreateList  := bCreateList

 ::SetList( uDataSrc, ::xField )

 ::nItemTextColor       := nItemTextColor
 ::nItemBackgroundColor := nItemBackgroundColor

 ::nListWidth   := nListWidth
 ::bAdaptaGet   := bAdaptaGet

 ::Super:New(nRow   , nCol    , bSetGet  , oWnd     , nWidth   , nHeight,;
         cPict  , bValid  , nClrFore , nClrBack , oFont    , lDesign,;
         oCursor, lPixel  , cMsg     , lUpdate  , bWhen    , lCenter,;
         lRight , bChanged, lReadOnly, lPassword, lNoBorder, nHelpId,;
         lSpinner, bUp    , bDown    , bMin     , bMax )

return ( self )

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

METHOD ReDefine( nId,       bSetGet,  oWnd,    nHelpId, cPict,   bValid, nClrFore,;
                 nClrBack,  oFont,    oCursor, cMsg,    lUpdate, bWhen,  bChanged,;
                 lReadOnly, lSpinner, bUp,     bDown,   bMin,    bMax,   bAction,;
                 cBmpName,  cVarName, cCueText,;
                 uDataSrc, xField    , nListHeight,  nListWidth, bAdaptaGet, bCreateList,;
                 nItemTextColor, nItemBackgroundColor ) CLASS TBrowseGet

 DEFAULT xField     := BROWSEGETCODIGOCOLUMN
 DEFAULT nListHeight := 300
 DEFAULT nListWidth := 300

 ::xField       := xField
 ::nListHeight  := nListHeight

 ::uDataSource  := uDataSrc
 ::bCreateList  := bCreateList

 ::SetList( uDataSrc, ::xField )

 ::nItemTextColor       := nItemTextColor
 ::nItemBackgroundColor := nItemBackgroundColor

 ::nListWidth   := nListWidth
 ::bAdaptaGet   := bAdaptaGet

 ::Super:ReDefine( nId,       bSetGet,  oWnd,    nHelpId, cPict,   bValid, nClrFore,;
               nClrBack,  oFont,    oCursor, cMsg,    lUpdate, bWhen,  bChanged,;
               lReadOnly, lSpinner, bUp,     bDown,   bMin,    bMax,   bAction,;
               cBmpName,  cVarName, cCueText )

return ( self )


METHOD CreateList() CLASS TBrowseGet

 If ! ::ValidList()

      if Len ( ::uDataSource ) > 0

           ::oList := TBrowseGetList():New( ::nListWidth, ::nListHeight, Self,;
                                     ::oFont, ::nItemTextColor, ::nItemBackgroundColor )

           ::oList:bAdaptaGet:=::bAdaptaGet
           ::oList:SetList( ::uDataSource, ::xField )

           if HB_ISOBJECT (::oList)

                ::oList:Paint()

           endif

           ::SetFocus()

      Endif

 Else

      ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )
      ::oList:SetList( ::uDataSource, ::xField )

      If Len ( ::oList:aData ) == 0

           ::uDataSource := ::uOrgData
           ::oList:end()
           ::oList = NIL

      Else

           ::oList:Refresh()
           ::SetFocus()

      Endif

 Endif

return ( nil )


METHOD CloseList() CLASS TBrowseGet

 if ::ValidList()

      ::oList:End()

 endif

return ( nil )


METHOD MouseWheel( nKeys, nDelta, nXPos, nYPos ) CLASS TBrowseGet

 local aPos := { nYPos, nXPos }

 if ::ValidList()

      if nDelta < 0

           ::oList:GoDown()

      else

           ::oList:GoUp()

      endif

 endif

return ( nil )


METHOD KeyDown( nKey, nFlags ) CLASS TBrowseGet

 if ::ValidList()

      switch nKey

           case VK_BACK

                ::CreateList()
                return ::Super:KeyDown( nKey, nFlags )

           case VK_LEFT

           case VK_RIGHT

                return ::Super:KeyDown( nKey, nFlags )
                exit

           case VK_DOWN

                ::oList:GoDown()
                exit

           case VK_UP

                ::oList:GoUp()

      endswitch

 else

      return ::Super:KeyDown( nKey, nFlags )

 endif

return ( 0 )

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

METHOD KeyChar ( nKey, nFlags ) CLASS TBrowseGet

 local nret

 switch nKey

      case VK_ESCAPE

           ::CloseList()
           return ::Super:KeyChar( nKey, nFlags )

      case VK_BACK

           nRet = ::Super:KeyChar( nKey, nFlags )

           if HB_ISOBJECT ( ::oGet )

                if Len ( Alltrim ( ::oGet:Buffer ) ) == 0

                     ::CloseList()

                else

                     ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )
                     ::CreateList()

                endif

           endif

           return nRet

      case VK_RETURN

           if ::ValidList()

                eval ( ::oList:oBrowse:bChange )
                ::bValid := ::oList:bGetValid
                ::oList:End()
                ::oWnd:GoNextCtrl( ::hWnd )

           endif

      case VK_TAB

           if ::ValidList()

                eval ( ::oList:oBrowse:bChange )
                ::bValid := ::oList:bGetValid
                ::oList:End()
                ::oWnd:GoNextCtrl( ::hWnd )

           endif



      case VK_DOWN

           return ::Super:KeyChar( nKey, nFlags )

 endswitch

 nret = ::Super:KeyChar( nKey, nFlags )

 if ::oGet:Buffer != nil .and. Len ( Alltrim ( ::oGet:Buffer ) ) > 0

      ::uOrgData    := ::uDataSource
      ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )

      ::CreateList()

 endif

return ( nret )

/*
     Clase TBrowseGetList
     Clase para la TBrowseGet que se encarga de la lista.
     Autor: Ángel Salom
*/

CLASS TBrowseGetList

 DATA oDlgBrowse
 DATA oFont
 DATA oBrowse

 DATA lReleaseFont INIT .f.

 DATA nWidth
 DATA nHeight

 DATA uOrgValue
 DATA nDataType
 DATA aData

 DATA oGet
 DATA bAdaptaGet
 DATA bGetValid

 DATA bClrSel
 DATA bClrSelFocus
 DATA bClrStd


 METHOD New( nWidth, nHeight, oGet, oFont, nItemTextColor, nItemBackGroundColor )
 METHOD SetList( uDataSource, xField )
 METHOD Paint()
 METHOD Change()
 METHOD Refresh()
 METHOD GoUp()
 METHOD GoDown()
 METHOD End()

END CLASS

 //---------------------------------------------------------------------------//
 METHOD New( nWidth, nHeight, oGet, oFont, nITemTextColor, nItemBackGroundColor ) CLASS TBrowseGetList

 ::nWidth   := nWidth
 ::nHeight  := nHeight
 ::oGet     := oGet
 ::oFont    := oFont

 DEFAULT nItemTextColor       := nRgb ("#333333")
 DEFAULT nItemBackGroundColor := nRgb ("#3399fe")

 ::bClrStd       := {|| { nITemTextColor, nRgb ( '#fffffd' ) } }
 ::bClrSel       := {|| { nRgb ( '#fffffd' ), nItemBackGroundColor  } }
 ::bClrSelFocus  := {|| { nRgb ( '#fffffd' ), nItemBackGroundColor  } }

 If ::oFont == nil

      ::oFont := TFont():New()
      ::oFont:hFont := GetStockObject( DEFAULT_GUI_FONT )
      ::lReleaseFont := .t.

 Else

      ::oFont := oFont

 Endif

return Self


METHOD SetList( uDataSource, xField ) CLASS TBrowseGetList

 local cType := ValType( uDataSource )

 DEFAULT xField := 1

 if cType == "A"

      ::nDataType = DATATYPE_ARRAY
      ::aData := ::oGet:uDataSource

 elseif cType == "H"

      ::nDataType = DATATYPE_HASH
      ::aData := ::oGet:uDataSource

 endif

 if HB_ISOBJECT ( ::oBrowse )

      ::oBrowse:SetArray ( ::aData )

 endif

Return ( nil )


METHOD Paint() CLASS TBrowseGetList

 Local aPoint
 Local nColumn

 aPoint :={ ::oGet:nTop + ::oGet:nHeight, ::oGet:nLeft }
 aPoint = ClientToScreen( ::oGet:oWnd:hWnd, aPoint )

 ::bGetValid       := ::oGet:bValid
 ::oGet:bValid     := nil

 DEFINE DIALOG ::oDlgBrowse OF ::oGet:oWnd STYLE WS_POPUP ;
      SIZE ::nWidth, ::nHeight COLOR CLR_WHITE, CLR_WHITE

      ::oDlgBrowse:nStyle := nOr (WS_POPUP, WS_BORDER)
 ACTIVATE DIALOG ::oDlgBrowse NOWAIT ;
           ON INIT ::SetPos( aPoint[ 1 ] , aPoint[ 2 ] )


 @ 5, 5 XBROWSE ::oBrowse DATASOURCE ::aData AUTOCOLS  ;
           SIZE ::oDlgBrowse:nWidth - 10, ::oDlgBrowse:nHeight - 10  OF ::oDlgBrowse PIXEL FONT ::oFont NOBORDER

 WITH OBJECT ::oBrowse

      :nMarqueeStyle       := 5
      :lRecordSelector     := .F.
      :lAllowColSwapping   := .F.
      :lAllowColHiding     := .F.
      :lFastDraw           := .t.
      :lHScroll            := .f.
      :lVScroll            := .f.
      :lHeader             := .f.
      :lFlatStyle          := .t.
      :nStretchCol         := STRETCHCOL_WIDEST
      :lColDividerComplete := .t.
      :nColDividerStyle    := LINESTYLE_LIGHTGRAY
      :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      :lRefreshOnlyData    := .F.
      :lReadOnly           := .t.

      :bClrStd       := ::bClrStd
      :bClrSel       := ::bClrSel
      :bClrSelFocus  := ::bClrSelFocus

      :CreateFromCode()
      :PostMsg( WM_SETFOCUS )
      :bKeyDown   := { | nKey | If( nKey == VK_RETURN .OR. nKey == VK_TAB, ::End() , ) }
      :bLButtonUp := { | nRow, nCol | (  Eval( ::oBrowse:bChange ),;
                     ::End(),;
                     ::oGet:oWnd:GoNextCtrl( ::oGet:hWnd ) ) }

      :bChange   := { ||  ::Change() }

 END WITH

   WITH OBJECT ::oGet

  :oWnd:bMoved      := { || (  ::End() ) }
  :oWnd:bResized    := { || (  ::End() ) }
  :oWnd:bLClicked   := { || (  ::End() ) }

   END WITH

Return ( nil )


METHOD GoDown() CLASS TBrowseGetList

 ::oBrowse:GoDown()

Return ( nil )


METHOD GoUp() CLASS TBrowseGetList

 ::oBrowse:GoUp()

Return ( nil )


METHOD Change() CLASS TBrowseGetList

 ::oGet:VarPut( ::oBrowse:aCols[ ::oGet:xField ]:Value )

 if ::bAdaptaGet != NIL

      Eval ( ::bAdaptaGet )

 endif

 ::oGet:SetPos( Len ( Alltrim ( ::oGet:cText ) ) + 1 )
 ::oGet:Refresh()

Return ( nil )


METHOD Refresh() CLASS TBrowseGetList

 ::oBrowse:Refresh()

return ( nil )


METHOD End() CLASS TBrowseGetList

 if HB_ISOBJECT ( ::oBrowse )

      ::oBrowse:End()

 endif

 if HB_ISOBJECT ( ::oFont ) .and.;
      ::lReleaseFont

      ::oFont:End()
      ::oFont:=NIL

 endif

 if HB_ISOBJECT ( ::oDlgBrowse )

      ::oDlgBrowse:End()

 endif

 ::oGet:oList := nil
 ::oGet:bValid := ::bGetValid

return ( nil )


//-----------------------------------------//
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 12:38 PM

Estimado José,

Que errores te da ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 12:52 PM

Perdón, cosas de viejo, me olvidé de poner los errores :oops:

Application
===========
   Path and name: D:\XBase-Proyectos\Camiones\empresas\CamionesMySqlSirsil\CamionesSQL.exe (32 bits)
   Size: 5,562,880 bytes
   Compiler version: Harbour 3.2.0dev (r2502110321)
   FiveWin  version: FWH 25.09
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 4 sec
   Error occurred at: 07/11/2025, 09:50:33
   Error description: Error BASE/2022  Error de argumento: ALLTRIM
   Args:
     [   1] = U   

Stack Calls
===========
   Called from:  => ALLTRIM( 0 )
   Called from: c:\clases_y_funciones_de_3ros\browseget\Browseget.prg => TBROWSEGET:KEYCHAR( 247 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:HANDLEEVENT( 1605 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => DIALOGBOXINDIRECT( 0 )
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )
   Called from: .\source\function\errsysw.prg => ERRORDIALOG( 448 )
   Called from: .\source\function\errsysw.prg => (b)ERRORSYS( 24 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:ISDOUBLEBYTE( 4725 )
   Called from: .\source\classes\tget.prg => TGET:KEYDOWN( 2650 )
   Called from: c:\clases_y_funciones_de_3ros\browseget\Browseget.prg => TBROWSEGET:KEYDOWN( 200 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:HANDLEEVENT( 1605 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => ENTRADA( 357 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => (b)BARRABOT( 244 )
   Called from: .\source\classes\trbtn.prg => TRBTN:CLICK( 721 )
   Called from: .\source\classes\trbtn.prg => TRBTN:LBUTTONUP( 924 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
   Called from: .\source\classes\trbtn.prg => TRBTN:HANDLEEVENT( 1576 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE( 1178 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => CAMIONES( 201 )

System
======
   CPU type: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3408 Mhz
   Hardware memory: 40867 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 ,                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   ALLTRIM
     Param   1:    O    Class: ERROR
   TBROWSEGET:KEYCHAR
     Param   1:    U    

     Local   1:    U    

     Local   2:    U    

   TWINDOW:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    917505
     Local   1:    N    0
     Local   2:    S    @LEN()
     Local   3:    U    

   TCONTROL:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    8
     Param   3:    N    917505
   TBROWSEGET:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

   _FWH
     Param   1:    N    258
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

     Local   2:    U    

     Local   3:    U    

     Local   4:    L    .T.
     Local   5:    U    

     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    C    ""
     Local  10:    U    

     Local  11:    U    

   DIALOGBOXINDIRECT
     Param   1:    N    917505
     Param   2:    N    258
     Param   3:    N    8
     Param   4:    N    917505
     Param   5:    N    33
     Local   1:    O    Class: TBROWSEGET
   TDIALOG:ACTIVATE
     Param   1:    N    15859712
     Param   2:    C    "  Ȁ       z         F i v e W i n   f o r   H a r b o u r        P    4  u    S T A T I C         E r r o r   d e s c r i p t i o n :   E r r o r   B A S E / 1 0 6 6     E r r o r   d e   a r g u m e n t o :   c o n d i c i o n a l 
 
    P      H    S T A T I C   & S t a c k   L i s t          P     !   {   L I S T B O X          P    a       B U T T O N   & Q u i t         P       / 
   B U T T O N   S e e   e r r o r . l o g   f i l e     "
     Param   3:    N    1250746
     Param   4:    O    Class: TDIALOG
   ERRORDIALOG
     Param   1:    U    

     Param   2:    U    

     Param   3:    B    {|| ... }
     Param   4:    L    .T.
     Param   5:    U    

     Param   6:    L    .T.
     Param   7:    U    

     Param   8:    U    

     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    L    .F.
     Param  13:    O    Class: TDIALOG
     Param  14:    U    

     Param  15:    U    

     Local   1:    N    1250746
     Local   2:    S    @_NRESULT()
     Local   3:    O    Class: TDIALOG
   (b)ERRORSYS
     Param   1:    O    Class: ERROR
     Local   1:    O    Class: TDIALOG
     Local   2:    U    

     Local   3:    C    "   Called from: .\source\classes\tget.prg => TBROWSEGET:ISDOUBLEBYTE( 4725 )"
     Local   4:    N    4
     Local   5:    C    "   Error description: Error BASE/1066  Error de argumento: condicional
"
     Local   6:    A    Len:   19
     Local   7:    O    Class: TSAY
     Local   8:    N    1124412069
     Local   9:    N    1
     Local  10:    C    "Application
===========
   Path and name: D:\XBase-Proyectos\Camiones\empresas\CamionesMySqlSirsil\CamionesSQL.exe (32 bits)
   Size: 5,562,880 bytes
   Compiler version: Harbour 3.2.0dev (r2502110321)
   FiveWin  version: FWH 25.09
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 4 sec
   Error occurred at: 07/11/2025, 09:50:33
   Error description: Error BASE/1066  Error de argumento: condicional
   Args:
     [   1] = U   

Stack Calls
===========
   Called from: .\source\classes\tget.prg => TBROWSEGET:ISDOUBLEBYTE( 4725 )
   Called from: .\source\classes\tget.prg => TGET:KEYDOWN( 2650 )
   Called from: c:\clases_y_funciones_de_3ros\browseget\Browseget.prg => TBROWSEGET:KEYDOWN( 200 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:HANDLEEVENT( 1605 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => ENTRADA( 357 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => (b)BARRABOT( 244 )
   Called from: .\source\classes\trbtn.prg => TRBTN:CLICK( 721 )
   Called from: .\source\classes\trbtn.prg => TRBTN:LBUTTONUP( 924 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
   Called from: .\source\classes\trbtn.prg => TRBTN:HANDLEEVENT( 1576 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE( 1178 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => CAMIONES( 201 )

System
======
   CPU type: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3408 Mhz
   Hardware memory: 40867 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 ,                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   TBROWSEGET:ISDOUBLEBYTE
     Param   1:    O    Class: ERROR
   TGET:KEYDOWN
     Param   1:    C    "S           "
     Param   2:    N    1
     Param   3:    N    1
     Local   1:    L    .F.
     Local   2:    U    

     Local   3:    N    1
     Local   4:    C    "S "
     Local   5:    N    1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

   TBROWSEGET:KEYDOWN
     Param   1:    N    8
     Param   2:    N    917505
     Local   1:    O    Class: TBROWSEGET
     Local   2:    N    1
     Local   3:    N    1
     Local   4:    U    

     Local   5:    N    -1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    U    

     Local  10:    U    

   TWINDOW:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    917505
   TCONTROL:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
   TBROWSEGET:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

   _FWH
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

     Local   2:    U    

     Local   3:    U    

     Local   4:    L    .T.
     Local   5:    U    

     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    C    ""
     Local  10:    U    

     Local  11:    U    

   DIALOGBOX
     Param   1:    N    917505
     Param   2:    N    256
     Param   3:    N    8
     Param   4:    N    917505
     Param   5:    N    33
     Local   1:    O    Class: TBROWSEGET
   TDIALOG:ACTIVATE
     Param   1:    N    15859712
     Param   2:    C    "ENTRADA"
     Param   3:    N    4264944
     Param   4:    O    Class: TDIALOG
   ENTRADA
     Param   1:    U    

     Param   2:    U    

     Param   3:    U    

     Param   4:    L    .T.
     Param   5:    U    

     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    

     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    L    .F.
     Param  13:    O    Class: TDIALOG
     Param  14:    U    

     Param  15:    U    

     Local   1:    N    4264944
     Local   2:    S    @_NRESULT()
     Local   3:    O    Class: TDIALOG
   (b)BARRABOT
     Local   1:    O    Class: TDIALOG
     Local   2:    A    Len:    3
     Local   3:    O    Class: TBUTTONBMP
     Local   4:    O    Class: TBUTTON
     Local   5:    A    Len:   11
     Local   6:    A    Len:   57
     Local   7:    A    Len:    3
     Local   8:    A    Len:   23
     Local   9:    A    Len:   29
   TRBTN:CLICK
     Param   1:    O    Class: TRBTN
   TRBTN:LBUTTONUP
   TCONTROL:HANDLEEVENT
     Param   1:    N    45
     Param   2:    N    50
     Param   3:    N    0
     Local   1:    L    .T.
     Local   2:    L    .T.
     Local   3:    S    @CLICK()
   TRBTN:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    2949170
     Local   1:    U    

   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    2949170
   WINRUN
     Param   1:    N    2949170
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    2949170
     Param   5:    N    9
     Local   1:    O    Class: TRBTN
   TWINDOW:ACTIVATE
     Param   1:    N    4264944
   CAMIONES
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    

     Param   3:    U    

     Param   4:    U    

     Param   5:    U    

     Param   6:    U    

     Param   7:    U    

     Param   8:    B    {|| ... }
     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    U    

     Param  13:    U    

     Param  14:    U    

     Param  15:    U    

     Param  16:    U    

     Param  17:    B    {|| ... }
     Param  18:    U    

     Param  19:    U    

     Param  20:    L    .F.
     Param  21:    U    

     Local   1:    O    Class: TWINDOW
     Local   2:    U    

     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TCONTROL
     6 TGET
     7 FWMARIACONNECTION
     8 TFONT
     9 TICON
    10 TBRUSH
    11 FWROWSET
    12 FWMARIAROWSET
    13 TFIELD
    14 TFIELDS
    15 TREG32
    16 TBITMAP
    17 TIMAGE
    18 TMSGBAR
    19 TRECT
    20 TMSGITEM
    21 TTIMER
    22 TRIBBONBAR
    23 TRPANEL
    24 TRBGROUP
    25 TRBTN
    26 TMENU
    27 TMENUITEM
    28 TDIALOG
    29 GET
    30 TCLIPGET
    31 TBROWSEGET
    32 TSAY
    33 TBUTTON
    34 TBUTTONBMP
    35 TBROWSEGETLIST
    36 TXBROWSE
    37 TXBRWCOLUMN
    38 TCLIPBOARD
    39 TSTRUCT

Memory Analysis
===============
      860 Static variables

   Dynamic memory consume:
      Actual  Value:  121110528 bytes
      Highest Value:  121110528 bytes
"
     Local  11:    A    Len:    5
     Local  12:    A    Len:    1
     Local  13:    A    Len:    5
     Local  14:    U    

     Local  15:    B    {|| ... }
     Local  16:    L    .T.
     Local  17:    N    97.50
     Local  18:    N    0
     Local  19:    U    

     Local  20:    N    158
     Local  21:    N    30
     Local  22:    N    11
     Local  23:    N    450
     Local  24:    N    350
     Local  25:    N    33
     Local  26:    N    220
     Local  27:    N    123
   TBROWSEGET:ISDOUBLEBYTE
     Param   1:    O    Class: ERROR
   TGET:KEYDOWN
     Param   1:    C    "S           "
     Param   2:    N    1
     Param   3:    N    1
     Local   1:    L    .F.
     Local   2:    U    

     Local   3:    N    1
     Local   4:    C    "S "
     Local   5:    N    1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

   TBROWSEGET:KEYDOWN
     Param   1:    N    8
     Param   2:    N    917505
     Local   1:    O    Class: TBROWSEGET
     Local   2:    N    1
     Local   3:    N    1
     Local   4:    U    

     Local   5:    N    -1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    U    

     Local  10:    U    

   TWINDOW:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    917505
   TCONTROL:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
   TBROWSEGET:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

   _FWH
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

     Local   2:    U    

     Local   3:    U    

     Local   4:    L    .T.
     Local   5:    U    

     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    C    ""
     Local  10:    U    

     Local  11:    U    

   DIALOGBOX
     Param   1:    N    917505
     Param   2:    N    256
     Param   3:    N    8
     Param   4:    N    917505
     Param   5:    N    33
     Local   1:    O    Class: TBROWSEGET
   TDIALOG:ACTIVATE
     Param   1:    N    15859712
     Param   2:    C    "ENTRADA"
     Param   3:    N    4264944
     Param   4:    O    Class: TDIALOG
   ENTRADA
     Param   1:    U    

     Param   2:    U    

     Param   3:    U    

     Param   4:    L    .T.
     Param   5:    U    

     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    

     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    L    .F.
     Param  13:    O    Class: TDIALOG
     Param  14:    U    

     Param  15:    U    

     Local   1:    N    4264944
     Local   2:    S    @_NRESULT()
     Local   3:    O    Class: TDIALOG
   (b)BARRABOT
     Local   1:    O    Class: TDIALOG
     Local   2:    A    Len:    3
     Local   3:    O    Class: TBUTTONBMP
     Local   4:    O    Class: TBUTTON
     Local   5:    A    Len:   11
     Local   6:    A    Len:   57
     Local   7:    A    Len:    3
     Local   8:    A    Len:   23
     Local   9:    A    Len:   29
   TRBTN:CLICK
     Param   1:    O    Class: TRBTN
   TRBTN:LBUTTONUP
   TCONTROL:HANDLEEVENT
     Param   1:    N    45
     Param   2:    N    50
     Param   3:    N    0
     Local   1:    L    .T.
     Local   2:    L    .T.
     Local   3:    S    @CLICK()
   TRBTN:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    2949170
     Local   1:    U    

   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    2949170
   WINRUN
     Param   1:    N    2949170
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    2949170
     Param   5:    N    9
     Local   1:    O    Class: TRBTN
   TWINDOW:ACTIVATE
     Param   1:    N    4264944
   CAMIONES
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    

     Param   3:    U    

     Param   4:    U    

     Param   5:    U    

     Param   6:    U    

     Param   7:    U    

     Param   8:    B    {|| ... }
     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    U    

     Param  13:    U    

     Param  14:    U    

     Param  15:    U    

     Param  16:    U    

     Param  17:    B    {|| ... }
     Param  18:    U    

     Param  19:    U    

     Param  20:    L    .F.
     Param  21:    U    

     Local   1:    O    Class: TWINDOW
     Local   2:    U    

     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TCONTROL
     6 TGET
     7 FWMARIACONNECTION
     8 TFONT
     9 TICON
    10 TBRUSH
    11 FWROWSET
    12 FWMARIAROWSET
    13 TFIELD
    14 TFIELDS
    15 TREG32
    16 TBITMAP
    17 TIMAGE
    18 TMSGBAR
    19 TRECT
    20 TMSGITEM
    21 TTIMER
    22 TRIBBONBAR
    23 TRPANEL
    24 TRBGROUP
    25 TRBTN
    26 TMENU
    27 TMENUITEM
    28 TDIALOG
    29 GET
    30 TCLIPGET
    31 TBROWSEGET
    32 TSAY
    33 TBUTTON
    34 TBUTTONBMP
    35 TBROWSEGETLIST
    36 TXBROWSE
    37 TXBRWCOLUMN
    38 TCLIPBOARD
    39 TSTRUCT
    40 TLISTBOX

Memory Analysis
===============
      860 Static variables

   Dynamic memory consume:
      Actual  Value:  121241600 bytes
      Highest Value:  121241600 bytes
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 02:27 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 02:47 PM
karinha wrote:

És la misma clase?

https://forums.fivetechsupport.com/viewtopic.php?p=239689#p239689

Regards, saludos.

Hola Karinha
Si creo que es la misma.

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 03:00 PM

Que hay en esta lynea?

   Browseget.prg => TBROWSEGET:KEYCHAR( 247 )

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 03:17 PM
karinha wrote:

Que hay en esta lynea?

   Browseget.prg => TBROWSEGET:KEYCHAR( 247 )

Regards, saludos.

247 if Len ( Alltrim ( ::oGet:Buffer ) ) == 0

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 03:23 PM

Prueba a cambiar esa línea:

if Len ( Alltrim ( ::oGet:Buffer ) ) == 0

por esta:

if Empty( ::oGet:Buffer )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 03:24 PM

Intenta:

 ? LEN( ::oGet:Buffer  )
 ? alltrim( ::oGet:Buffer  )

if Alltrim( LEN ( ::oGet:Buffer ) ) == 0
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 04:02 PM

El error anterior parece estar resuelto, pero ahora se produce el siguiente error en la línea 200

200 return ::Super:KeyDown( nKey, nFlags )

Este es el error.log:

Application
===========
   Path and name: D:\XBase-Proyectos\Camiones\empresas\CamionesMySqlSirsil\CamionesSQL.exe (32 bits)
   Size: 5,563,392 bytes
   Compiler version: Harbour 3.2.0dev (r2502110321)
   FiveWin  version: FWH 25.09
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 4 sec
   Error occurred at: 07/11/2025, 12:57:25
   Error description: Error BASE/1066  Error de argumento: condicional
   Args:
     [   1] = U   

Stack Calls
===========
   Called from: .\source\classes\tget.prg => TBROWSEGET:ISDOUBLEBYTE( 4725 )
   Called from: .\source\classes\tget.prg => TGET:KEYDOWN( 2650 )
   Called from: c:\clases_y_funciones_de_3ros\browseget\BROWSEGET.prg => TBROWSEGET:KEYDOWN( 200 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:HANDLEEVENT( 1605 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => ENTRADA( 357 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => (b)BARRABOT( 244 )
   Called from: .\source\classes\trbtn.prg => TRBTN:CLICK( 721 )
   Called from: .\source\classes\trbtn.prg => TRBTN:LBUTTONUP( 924 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
   Called from: .\source\classes\trbtn.prg => TRBTN:HANDLEEVENT( 1576 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE( 1178 )
   Called from: d:\xbase-proyectos\camiones\empresas\camionesmysqlsirsil\source\Camiones.prg => CAMIONES( 201 )

System
======
   CPU type: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3408 Mhz
   Hardware memory: 40867 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 ,                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   TBROWSEGET:ISDOUBLEBYTE
     Param   1:    O    Class: ERROR
   TGET:KEYDOWN
     Param   1:    C    "AA          "
     Param   2:    N    1
     Param   3:    N    2
     Local   1:    L    .F.
     Local   2:    U    

     Local   3:    N    1
     Local   4:    C    "AA"
     Local   5:    N    2
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

   TBROWSEGET:KEYDOWN
     Param   1:    N    8
     Param   2:    N    917505
     Local   1:    O    Class: TBROWSEGET
     Local   2:    N    2
     Local   3:    N    2
     Local   4:    U    

     Local   5:    N    -1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    U    

     Local  10:    U    

   TWINDOW:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    917505
   TCONTROL:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
   TBROWSEGET:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

   _FWH
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

     Local   2:    U    

     Local   3:    U    

     Local   4:    L    .T.
     Local   5:    U    

     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    C    ""
     Local  10:    U    

     Local  11:    U    

   DIALOGBOX
     Param   1:    N    917505
     Param   2:    N    256
     Param   3:    N    8
     Param   4:    N    917505
     Param   5:    N    33
     Local   1:    O    Class: TBROWSEGET
   TDIALOG:ACTIVATE
     Param   1:    N    7602176
     Param   2:    C    "ENTRADA"
     Param   3:    N    6230664
     Param   4:    O    Class: TDIALOG
   ENTRADA
     Param   1:    U    

     Param   2:    U    

     Param   3:    U    

     Param   4:    L    .T.
     Param   5:    U    

     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    

     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    L    .F.
     Param  13:    O    Class: TDIALOG
     Param  14:    U    

     Param  15:    U    

     Local   1:    N    6230664
     Local   2:    S    @_NRESULT()
     Local   3:    O    Class: TDIALOG
   (b)BARRABOT
     Local   1:    O    Class: TDIALOG
     Local   2:    A    Len:    3
     Local   3:    O    Class: TBUTTONBMP
     Local   4:    O    Class: TBUTTON
     Local   5:    A    Len:   11
     Local   6:    A    Len:   57
     Local   7:    A    Len:    3
     Local   8:    A    Len:   23
     Local   9:    A    Len:   29
   TRBTN:CLICK
     Param   1:    O    Class: TRBTN
   TRBTN:LBUTTONUP
   TCONTROL:HANDLEEVENT
     Param   1:    N    50
     Param   2:    N    34
     Param   3:    N    0
     Local   1:    L    .T.
     Local   2:    L    .T.
     Local   3:    S    @CLICK()
   TRBTN:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3276834
     Local   1:    U    

   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3276834
   WINRUN
     Param   1:    N    3276834
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    3276834
     Param   5:    N    9
     Local   1:    O    Class: TRBTN
   TWINDOW:ACTIVATE
     Param   1:    N    6230664
   CAMIONES
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    

     Param   3:    U    

     Param   4:    U    

     Param   5:    U    

     Param   6:    U    

     Param   7:    U    

     Param   8:    B    {|| ... }
     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    U    

     Param  13:    U    

     Param  14:    U    

     Param  15:    U    

     Param  16:    U    

     Param  17:    B    {|| ... }
     Param  18:    U    

     Param  19:    U    

     Param  20:    L    .F.
     Param  21:    U    

     Local   1:    O    Class: TWINDOW
     Local   2:    U    

     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TCONTROL
     6 TGET
     7 FWMARIACONNECTION
     8 TFONT
     9 TICON
    10 TBRUSH
    11 FWROWSET
    12 FWMARIAROWSET
    13 TFIELD
    14 TFIELDS
    15 TREG32
    16 TBITMAP
    17 TIMAGE
    18 TMSGBAR
    19 TRECT
    20 TMSGITEM
    21 TTIMER
    22 TRIBBONBAR
    23 TRPANEL
    24 TRBGROUP
    25 TRBTN
    26 TMENU
    27 TMENUITEM
    28 TDIALOG
    29 GET
    30 TCLIPGET
    31 TBROWSEGET
    32 TSAY
    33 TBUTTON
    34 TBUTTONBMP
    35 TBROWSEGETLIST
    36 TXBROWSE
    37 TXBRWCOLUMN
    38 TCLIPBOARD
    39 TSTRUCT

Memory Analysis
===============
      860 Static variables

   Dynamic memory consume:
      Actual  Value:  121372672 bytes
      Highest Value:  121372672 bytes

Gracias Antonio y Karinha.

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 05:08 PM

Prueba este ejemplo, pls.

// C:\BROWGET\TESTBGET.PRG

#include "fivewin.ch"
#include "browseget.ch"

EXTERNAL OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto
EXTERNAL _DBF, DBFCDX, DBFFPT
ANNOUNCE RDDSYS

STATIC lSeekWild := .t.

FUNCTION Main()

   FIELD FIRST

   LOCAL oDlg, oGet, cName, cName1, cName2, oRs,  cAlias := "CUST"

   cName := SPACE(20)

   USE CUSTOMER NEW ALIAS CUST SHARED VIA 'DBFCDX'

   INDEX ON UPPER(FIRST) TAG FIRST1 TO TMP MEMORY

   SET ORDER TO TAG FIRST1

   GO TOP

   DEFINE DIALOG oDlg TITLE "Test BrowseGet" SIZE 600, 300 PIXEL

   oDlg:lHelpIcon := .F.

   @ 1,2 BROWSEGET oGet var cName of oDlg                         ;
         DATASOURCE {}                                            ;
         FILTER CUST->( ListFilter1( uDataSource, cData, Self ) ) ;
         COLUMN 1                                                 ;
         HEIGHTLIST 400

   @ 3,2 BUTTON "&Ok" OF odlg ACTION MsgAlert( "Get 1:" + cName )

   @ 3,20 BUTTON "&Close" OF odlg ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

//---------------------------------------------------------------------------//
// match case without case sensitive
function ListFilter1( aList, cData, oSelf )

   local aNewList := {}
   local cFor     := Upper( AllTrim( cData ) )
   local bFor

   if lSeekWild
      cFor   := '"' + cFor + '" $ UPPER(FIRST)'
   else
      cFor   := 'UPPER(FIRST)="' + cFor + '"'
   endif    

   bFor     := &( "{ ||" + cFor + "}" )

   aNewList := FW_DbfToArray( "FIRST", bFor )

RETURN aNewList

// fin / end

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 05:32 PM
karinha wrote:

Prueba este ejemplo, pls.

// C:\BROWGET\TESTBGET.PRG

#include "fivewin.ch"
#include "browseget.ch"

EXTERNAL OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto
EXTERNAL _DBF, DBFCDX, DBFFPT
ANNOUNCE RDDSYS

STATIC lSeekWild := .t.

FUNCTION Main()

   FIELD FIRST

   LOCAL oDlg, oGet, cName, cName1, cName2, oRs,  cAlias := "CUST"

   cName := SPACE(20)

   USE CUSTOMER NEW ALIAS CUST SHARED VIA 'DBFCDX'

   INDEX ON UPPER(FIRST) TAG FIRST1 TO TMP MEMORY

   SET ORDER TO TAG FIRST1

   GO TOP

   DEFINE DIALOG oDlg TITLE "Test BrowseGet" SIZE 600, 300 PIXEL

   oDlg:lHelpIcon := .F.

   @ 1,2 BROWSEGET oGet var cName of oDlg                         ;
         DATASOURCE {}                                            ;
         FILTER CUST->( ListFilter1( uDataSource, cData, Self ) ) ;
         COLUMN 1                                                 ;
         HEIGHTLIST 400

   @ 3,2 BUTTON "&Ok" OF odlg ACTION MsgAlert( "Get 1:" + cName )

   @ 3,20 BUTTON "&Close" OF odlg ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

//---------------------------------------------------------------------------//
// match case without case sensitive
function ListFilter1( aList, cData, oSelf )

   local aNewList := {}
   local cFor     := Upper( AllTrim( cData ) )
   local bFor

   if lSeekWild
      cFor   := '"' + cFor + '" $ UPPER(FIRST)'
   else
      cFor   := 'UPPER(FIRST)="' + cFor + '"'
   endif    

   bFor     := &( "{ ||" + cFor + "}" )

   aNewList := FW_DbfToArray( "FIRST", bFor )

RETURN aNewList

// fin / end

Produce el mismo error:

Application
===========
   Path and name: D:\XBASE-PROYECTOS\BRWGET\TESTBGET.exe (32 bits)
   Size: 5,138,944 bytes
   Compiler version: Harbour 3.2.0dev (r2502110321)
   FiveWin  version: FWH 25.09
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 3 sec
   Error occurred at: 11/07/25, 14:30:21
   Error description: Error BASE/1066  Argument error: conditional
   Args:
     [   1] = U   

Stack Calls
===========
   Called from: .\source\classes\tget.prg => TBROWSEGET:ISDOUBLEBYTE( 4725 )
   Called from: .\source\classes\tget.prg => TGET:KEYDOWN( 2650 )
   Called from: c:\clases_y_funciones_de_3ros\browseget\BROWSEGET.prg => TBROWSEGET:KEYDOWN( 200 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1877 )
   Called from: .\source\classes\tget.prg => TBROWSEGET:HANDLEEVENT( 1605 )
   Called from: .\source\classes\window.prg => _FWH( 3760 )
   Called from:  => DIALOGBOXINDIRECT( 0 )
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 325 )
   Called from: d:\xbase-proyectos\brwget\source\TESTBGET.prg => MAIN( 40 )

System
======
   CPU type: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3408 Mhz
   Hardware memory: 40867 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 ,                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   TBROWSEGET:ISDOUBLEBYTE
     Param   1:    O    Class: ERROR
   TGET:KEYDOWN
     Param   1:    C    "A                   "
     Param   2:    N    1
     Param   3:    N    1
     Local   1:    L    .F.
     Local   2:    U    

     Local   3:    N    1
     Local   4:    C    "A "
     Local   5:    N    1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

   TBROWSEGET:KEYDOWN
     Param   1:    N    8
     Param   2:    N    917505
     Local   1:    O    Class: TBROWSEGET
     Local   2:    N    1
     Local   3:    N    1
     Local   4:    U    

     Local   5:    N    -1
     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    U    

     Local  10:    U    

   TWINDOW:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    917505
   TCONTROL:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
   TBROWSEGET:HANDLEEVENT
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

   _FWH
     Param   1:    N    256
     Param   2:    N    8
     Param   3:    N    917505
     Local   1:    U    

     Local   2:    U    

     Local   3:    U    

     Local   4:    L    .T.
     Local   5:    U    

     Local   6:    U    

     Local   7:    U    

     Local   8:    U    

     Local   9:    C    ""
     Local  10:    U    

     Local  11:    U    

   DIALOGBOXINDIRECT
     Param   1:    N    917505
     Param   2:    N    256
     Param   3:    N    8
     Param   4:    N    917505
     Param   5:    N    2
     Local   1:    O    Class: TBROWSEGET
   TDIALOG:ACTIVATE
     Param   1:    N    7143424
     Param   2:    C    "  Ȁ         -      T e s t   B r o w s e G e t      P     

 L 
 e E D I T                                                 P     6   f B U T T O N   & O k         P    x 6 %  g B U T T O N   & C l o s e     "
     Param   3:    N    0
     Param   4:    O    Class: TDIALOG
   MAIN
     Param   1:    U    

     Param   2:    U    

     Param   3:    U    

     Param   4:    L    .T.
     Param   5:    U    

     Param   6:    L    .T.
     Param   7:    U    

     Param   8:    U    

     Param   9:    U    

     Param  10:    U    

     Param  11:    U    

     Param  12:    L    .F.
     Param  13:    O    Class: TDIALOG
     Param  14:    U    

     Param  15:    U    

     Local   1:    N    0
     Local   2:    S    @_NRESULT()
     Local   3:    O    Class: TDIALOG

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

  1: => CUST                               RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        320          500      .F.   .F.

 Indexes in use                        TagName
    => UPPER(FIRST)                       FIRST1

 Relations in use

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TDIALOG
     6 TBRUSH
     7 TCONTROL
     8 TGET
     9 TBROWSEGET
    10 GET
    11 TCLIPGET
    12 TBUTTON
    13 TFONT
    14 TREG32
    15 TRECT
    16 TBROWSEGETLIST
    17 TXBROWSE
    18 TXBRWCOLUMN
    19 TCLIPBOARD
    20 TSTRUCT

Memory Analysis
===============
      736 Static variables

   Dynamic memory consume:
      Actual  Value:    1310720 bytes
      Highest Value:    1310720 bytes

Regards, saludos.

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 05:35 PM

Prueba otra versión de FWH, porque con FWH1905 funciona perfectamente.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: BrowseGet y tGet 25.09
Posted: Fri Nov 07, 2025 06:10 PM
/* CLASS: TBrowseGet
    Permite mostrar una lista de datos desplegable para seleccionar desde un get
*/

//TODO: Documentar

#include "fivewin.ch"
#include "browseget.ch"

#define COLOR_CAPTIONTEXT     9
#define BROWSEGETCODIGOCOLUMN   1
#define DEFAULT_GUI_FONT     17
#define DATATYPE_HASH 256


CLASS TBrowseGet FROM TGet

   DATA nItemTextColor
   DATA nItemBackgroundColor

   DATA uDataSource
   DATA uOrgData
   DATA nDataType
   DATA xField
   DATA oList
   DATA bCreateList

   DATA nListHeight
   DATA nListWidth

   DATA bAdaptaGet

   METHOD New()
   METHOD ReDefine()

   METHOD CreateList( uDataSource )
   METHOD CloseList()

   METHOD KeyChar( nKey, nFlags )
   METHOD KeyDown( nKey, nFlags )

   METHOD MouseWheel( nKeys, nDelta, nXPos, nYPos )

   METHOD SetList( uDataSource, xField )   INLINE  ::uDataSource := uDataSource, ::xField := xField

   METHOD ValidList() INLINE ( HB_ISOBJECT (::oList) )

END CLASS

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

METHOD New( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, cPict, bValid,;
            nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg,;
            lUpdate, bWhen, lCenter, lRight, bChanged, lReadOnly,;
            lPassword, lNoBorder, nHelpId, lSpinner,;
            bUp, bDown, bMin, bMax, bAction, cBmpName, cVarName, cCueText,;
            uDataSrc, xField    , nListHeight,  nListWidth, bAdaptaGet, bCreateList,;
            nItemTextColor, nItemBackgroundColor  ) CLASS TBrowseGet

   DEFAULT xField      := BROWSEGETCODIGOCOLUMN
   DEFAULT nListHeight := 300
   DEFAULT nListWidth  := 500

   ::xField       := xField
   ::nListHeight  := nListHeight

   ::uDataSource  := uDataSrc
   ::bCreateList  := bCreateList

   ::SetList( uDataSrc, ::xField )

   ::nItemTextColor       := nItemTextColor
   ::nItemBackgroundColor := nItemBackgroundColor

   ::nListWidth   := nListWidth
   ::bAdaptaGet   := bAdaptaGet

   ::Super:New(nRow   , nCol    , bSetGet  , oWnd     , nWidth   , nHeight,;
             cPict  , bValid  , nClrFore , nClrBack , oFont    , lDesign,;
             oCursor, lPixel  , cMsg     , lUpdate  , bWhen    , lCenter,;
             lRight , bChanged, lReadOnly, lPassword, lNoBorder, nHelpId,;
             lSpinner, bUp    , bDown    , bMin     , bMax )

return ( self )

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

METHOD ReDefine( nId,       bSetGet,  oWnd,    nHelpId, cPict,   bValid, nClrFore,;
                 nClrBack,  oFont,    oCursor, cMsg,    lUpdate, bWhen,  bChanged,;
                 lReadOnly, lSpinner, bUp,     bDown,   bMin,    bMax,   bAction,;
                 cBmpName,  cVarName, cCueText,;
                 uDataSrc, xField    , nListHeight,  nListWidth, bAdaptaGet, bCreateList,;
                 nItemTextColor, nItemBackgroundColor ) CLASS TBrowseGet

   DEFAULT xField     := BROWSEGETCODIGOCOLUMN
   DEFAULT nListHeight := 300
   DEFAULT nListWidth := 300

   ::xField       := xField
   ::nListHeight  := nListHeight

   ::uDataSource  := uDataSrc
   ::bCreateList  := bCreateList

   ::SetList( uDataSrc, ::xField )

   ::nItemTextColor       := nItemTextColor
   ::nItemBackgroundColor := RGB(0,0,0)//nItemBackgroundColor

   ::nListWidth   := nListWidth
   ::bAdaptaGet   := bAdaptaGet

   ::Super:ReDefine( nId,       bSetGet,  oWnd,    nHelpId, cPict,   bValid, nClrFore,;
                   nClrBack,  oFont,    oCursor, cMsg,    lUpdate, bWhen,  bChanged,;
                   lReadOnly, lSpinner, bUp,     bDown,   bMin,    bMax,   bAction,;
                   cBmpName,  cVarName, cCueText )


return ( self )


METHOD CreateList() CLASS TBrowseGet

   If ! ::ValidList()

  if Len ( ::uDataSource ) > 0

    ::oList := TBrowseGetList():New( ::nListWidth, ::nListHeight, Self,;
                                     ::oFont, ::nItemTextColor, ::nItemBackgroundColor )

    ::oList:bAdaptaGet:=::bAdaptaGet
    ::oList:SetList( ::uDataSource, ::xField )

    if HB_ISOBJECT (::oList)

      ::oList:Paint()
       ::oList:Refresh()
      ::SetFocus()
    endif

    ::SetFocus()
sysrefresh()
      Endif

   Else

  ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )
  ::oList:SetList( ::uDataSource, ::xField )

  If Len ( ::oList:aData ) == 0

     ::uDataSource := ::uOrgData
     ::oList:end()
     ::oList = NIL

  Else

     ::oList:Refresh()
     ::SetFocus()

  Endif

   Endif

return ( nil )


METHOD CloseList() CLASS TBrowseGet

   if ::ValidList()

  ::oList:End()

   endif

return ( nil )


METHOD MouseWheel( nKeys, nDelta, nXPos, nYPos ) CLASS TBrowseGet

   local aPos := { nYPos, nXPos }

   if ::ValidList()

  if nDelta < 0

     ::oList:GoDown()

  else

     ::oList:GoUp()

  endif

   endif

return ( nil )


METHOD KeyDown( nKey, nFlags ) CLASS TBrowseGet

   if ::ValidList()

  switch nKey

     case VK_BACK

        ::CreateList()
        return ::Super:KeyDown( nKey, nFlags )

     case VK_LEFT

     case VK_RIGHT

        return ::Super:KeyDown( nKey, nFlags )
        exit

     case VK_DOWN

        ::oList:GoDown()
        exit

     case VK_UP

        ::oList:GoUp()

  endswitch

   else

  return ::Super:KeyDown( nKey, nFlags )

   endif

return ( 0 )

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

METHOD KeyChar ( nKey, nFlags ) CLASS TBrowseGet

   local nret

   switch nKey

  case VK_ESCAPE

     ::CloseList()
     return ::Super:KeyChar( nKey, nFlags )

  case VK_BACK

     nRet = ::Super:KeyChar( nKey, nFlags )

     if HB_ISOBJECT ( ::oGet )

        if Len ( Alltrim ( ::oGet:Buffer ) ) == 0

           ::CloseList()

        else

           ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )
           ::CreateList()

        endif

     endif

     return nRet

  case VK_RETURN

     if ::ValidList()

        eval ( ::oList:oBrowse:bChange )
        ::bValid := ::oList:bGetValid
        ::oList:End()
        ::oWnd:GoNextCtrl( ::hWnd )

     endif

  case VK_TAB

     if ::ValidList()

        eval ( ::oList:oBrowse:bChange )
        ::bValid := ::oList:bGetValid
        ::oList:End()
        ::oWnd:GoNextCtrl( ::hWnd )

     endif



  case VK_DOWN

     return ::Super:KeyChar( nKey, nFlags )

   endswitch

   nret = ::Super:KeyChar( nKey, nFlags )

   if ::oGet:Buffer != nil .and. Len ( Alltrim ( ::oGet:Buffer ) ) > 0

  ::uOrgData    := ::uDataSource
  ::uDataSource := Eval( ::bCreateList, ::uDataSource, AllTrim( ::oGet:Buffer ), Self )

  ::CreateList()

   endif

return ( nret )



CLASS TBrowseGetList

   DATA oDlgBrowse
   DATA oFont
   DATA oBrowse

   DATA lReleaseFont INIT .f.

   DATA nWidth
   DATA nHeight

   DATA uOrgValue
   DATA nDataType
   DATA aData

   DATA oGet
   DATA bAdaptaGet
   DATA bGetValid

   DATA bClrSel
   DATA bClrSelFocus
   DATA bClrStd


   METHOD New( nWidth, nHeight, oGet, oFont, nItemTextColor, nItemBackGroundColor )
   METHOD SetList( uDataSource, xField )
   METHOD Paint()
   METHOD Change()
   METHOD Refresh()
   METHOD GoUp()
   METHOD GoDown()
   METHOD End()

 END CLASS

 //---------------------------------------------------------------------------//
 METHOD New( nWidth, nHeight, oGet, oFont, nITemTextColor, nItemBackGroundColor ) CLASS TBrowseGetList

   ::nWidth   := nWidth
   ::nHeight  := nHeight
   ::oGet     := oGet
   ::oFont    := oFont

   DEFAULT nITemTextColor       := nRgb ("#333333")
   DEFAULT nItemBackGroundColor := nRgb (255,255,255)//("#3399fe")

   ::bClrStd       := {|| { nITemTextColor, nRgb ( '#fffffd' ) } }
   ::bClrSel       := {|| { nRgb ( '#fffffd' ), nItemBackGroundColor  } }
   ::bClrSelFocus  := {|| { nRgb ( '#fffffd' ), nItemBackGroundColor  } }

   If ::oFont == nil

 ::oFont := TFont():New()
 ::oFont:hFont := GetStockObject( DEFAULT_GUI_FONT )
 ::lReleaseFont := .t.

   Else

 ::oFont := oFont

   Endif

 return Self


 METHOD SetList( uDataSource, xField ) CLASS TBrowseGetList

   local cType := ValType( uDataSource )

   DEFAULT xField := 1

   if cType == "A"

  ::nDataType = DATATYPE_ARRAY
  ::aData := ::oGet:uDataSource

   elseif cType == "H"

  ::nDataType = DATATYPE_HASH
  ::aData := ::oGet:uDataSource

   endif

   if HB_ISOBJECT ( ::oBrowse )

  ::oBrowse:SetArray ( ::aData )

   endif

 Return ( nil )


 METHOD Paint() CLASS TBrowseGetList

   Local aPoint
   Local nColumn

   aPoint :={ ::oGet:nTop + ::oGet:nHeight, ::oGet:nLeft }
   aPoint = ClientToScreen( ::oGet:oWnd:hWnd, aPoint )

   ::bGetValid       := ::oGet:bValid
   ::oGet:bValid     := nil

   DEFINE DIALOG ::oDlgBrowse OF ::oGet:oWnd STYLE WS_POPUP ;
                 SIZE ::nWidth, ::nHeight COLOR CLR_WHITE, CLR_WHITE

   ::oDlgBrowse:nStyle := nOr (WS_POPUP, WS_BORDER)
   ACTIVATE DIALOG ::oDlgBrowse NOWAIT ;
                          ON INIT ::SetPos( aPoint[ 1 ] , aPoint[ 2 ] )


   @ 5, 5 XBROWSE ::oBrowse DATASOURCE ::aData AUTOCOLS  ;
         SIZE ::oDlgBrowse:nWidth - 10, ::oDlgBrowse:nHeight - 10  OF ::oDlgBrowse PIXEL FONT ::oFont NOBORDER

   WITH OBJECT ::oBrowse

  :nMarqueeStyle       := 5
  :lRecordSelector     := .F.
  :lAllowColSwapping   := .F.
  :lAllowColHiding     := .F.
  :lFastDraw           := .t.
  :lHScroll            := .F.
  :lVScroll            := .F.
  :lHeader             := .f.
  :lFlatStyle          := .t.
  :nStretchCol         := STRETCHCOL_WIDEST
  :lColDividerComplete := .t.
  :nColDividerStyle    := LINESTYLE_LIGHTGRAY
  :nMarqueeStyle       := MARQSTYLE_HIGHLROW
  :lRefreshOnlyData    := .F.
  :lReadOnly           := .t.

  :bClrStd       := ::bClrStd
  :bClrSel       := ::bClrSel
  :bClrSelFocus  := ::bClrSelFocus

  :CreateFromCode()
  :PostMsg( WM_SETFOCUS )
  :bKeyDown   := { | nKey | If( nKey == VK_RETURN .OR. nKey == VK_TAB, ::End() , ) }
  :bLButtonUp := { | nRow, nCol | (  Eval( ::oBrowse:bChange ),;
                                           ::End(),;
                                           ::oGet:oWnd:GoNextCtrl( ::oGet:hWnd ) ) }

  :bChange   := { ||  ::Change() }

   END WITH

   WITH OBJECT ::oGet

  :oWnd:bMoved      := { || (  ::End() ) }
  :oWnd:bResized    := { || (  ::End() ) }
  :oWnd:bLClicked   := { || (  ::End() ) }

   END WITH

 Return ( nil )


 METHOD GoDown() CLASS TBrowseGetList

   ::oBrowse:GoDown()

 Return ( nil )


 METHOD GoUp() CLASS TBrowseGetList

   ::oBrowse:GoUp()

 Return ( nil )


 METHOD Change() CLASS TBrowseGetList

   ::oGet:VarPut( ::oBrowse:aCols[ ::oGet:xField ]:Value )

   if ::bAdaptaGet != NIL

  Eval ( ::bAdaptaGet )

   endif

   ::oGet:SetPos( Len ( Alltrim ( ::oGet:cText ) ) + 1 )
   ::oGet:Refresh()

 Return ( nil )


 METHOD Refresh() CLASS TBrowseGetList

   ::oBrowse:Refresh()

 return ( nil )


 METHOD End() CLASS TBrowseGetList

   if HB_ISOBJECT ( ::oBrowse )

  ::oBrowse:End()

   endif

   if HB_ISOBJECT ( ::oFont ) .and.;
     ::lReleaseFont

  ::oFont:End()
  ::oFont:=NIL

   endif

   if HB_ISOBJECT ( ::oDlgBrowse )

  ::oDlgBrowse:End()

   endif

   ::oGet:oList := nil
   ::oGet:bValid := ::bGetValid

 return ( nil )


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

Reagrds, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: BrowseGet y tGet 25.09
Posted: Mon Nov 10, 2025 09:39 AM

Si con la versión 2504 y anteriores funciona bien, es con la 2509 únicamente con la que da problemas. En esa versión hay varios cambios a la tget.

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"