Combobox y búsqueda incremental

Combobox y búsqueda incremental

Postby horacio » Wed Nov 08, 2017 1:46 pm

Colegas, tengo definido un combobox con estilo CBS_DROPDOWN y búsqueda incremetal. Cuando recorro los items se ejecuta una acción pero cuando hago la búsqueda la acción no se ejecuta. Este es el código.

Code: Select all  Expand view

#include "fivewin.ch"
Static aItems

//----------------------------------------------------------------------------//
Function Main()

    Local oDlg
    Local oCbx
    Local cVar
   
    aItems := { 'UNO', 'DOS', 'TRES' }
   
    Define Dialog oDlg Truepixel
       
        @ 10, 10 ComboBox oCbx Var cVar Size 100, 150 Items aItems Of oDlg Pixel On Change( Muestrame( oCbx ) ) Style CBS_DROPDOWN           
       oCbx : lIncSearch := .t.
       
    Activate Dialog oDlg
    Return 0
   
//----------------------------------------------------------------------------//
Function Muestrame( oCbx )

    ? aItems[ oCbx : nAt ]
    Return 0

 


Alguna idea ??? Muchas gracias

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Postby karinha » Wed Nov 08, 2017 2:51 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby horacio » Wed Nov 08, 2017 3:17 pm

Gracias Joao por responder, la búsqueda funciona, lo que no funciona es el bChange que no se ejecuta cuando hago la búsqueda, sí cuando recorro los items con el teclado o ratón. Compila el ejemplo que postee y prueba.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Postby karinha » Wed Nov 08, 2017 5:29 pm

Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oDlg, oCbx, cSearch := Space( 100 ), ;
         aItems := { "africa", "america", "asia", "europe", "oceania" }

   DEFINE DIALOG oDlg SIZE 400, 300

   @ 2.4, 1.2 COMBOBOX oCbx VAR cSearch ITEMS aItems OF oDlg SIZE 180, 150

   oCbx:lIncSearch = .T.

   ACTIVATE DIALOG oDlg CENTERED

return nil
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby karinha » Wed Nov 08, 2017 5:31 pm

Code: Select all  Expand view

#include "fivewin.ch"

Static aItems

//----------------------------------------------------------------------------//
Function Main()

   Local oDlg
   Local oCbx
   Local cVar
   
   aItems := { 'UNO', 'DOS', 'TRES' }
   
   //Define Dialog oDlg Truepixel
   DEFINE DIALOG oDlg FROM 10, 10 TO 20, 50 ;
     TITLE "DropDown ComboBox Test" TRUEPIXEL
       
   @ 10, 10 ComboBox oCbx Var cVar Size 100, 150 Items aItems Of oDlg Pixel ;
      On Change( Muestrame( oCbx, oDlg ) ) Style CBS_DROPDOWN

   oCbx : lIncSearch := .t.
       
   Activate Dialog oDlg

Return Nil
   
//----------------------------------------------------------------------------//
Function Muestrame( oCbx, oDlg )

   LOCAL cText

   //    ? aItems[ oCbx : nAt ]

   cText := aItems[ oCbx:nAt ]

   oDlg:SetText( cText )

Return( .T. )
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby horacio » Wed Nov 08, 2017 5:35 pm

Joao, con tu código tampoco funciona. Ingresa la letra "U", aparecerá "UNO" en el get del combobox pero no se ejecuta muestrame( oCbx, oDlg )

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Postby karinha » Wed Nov 08, 2017 8:01 pm

Horácio, cambia asi:

Code: Select all  Expand view


    @ 10, 10 ComboBox oCbx Var cVar Size 100, 150 Items aItems Of oDlg Pixel ;
       On Change( Muestrame( oCbx, oDlg ) ) Style CBS_DROPDOWN UPDATE
 


Acá funciona bién.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby horacio » Wed Nov 08, 2017 8:28 pm

Joao, he seguido tu sugerencia pero no logro hacerlo funcionar. Será la versión de FWH que utilizo ? Uso FWH 17.01. Gracias de todas maneras

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Postby karinha » Thu Nov 09, 2017 11:52 am

Horácio cuando pulso el mouse, el on change funciona bién,

Image

Code: Select all  Expand view

#include "fivewin.ch"

Static aItems

//----------------------------------------------------------------------------//
Function Main()

   Local oDlg
   Local oCbx
   Local cVar
   
   aItems := { 'UNO', 'DOS', 'TRES' }
   
   //Define Dialog oDlg Truepixel
   DEFINE DIALOG oDlg FROM 10, 10 TO 20, 50 ;
     TITLE "DropDown ComboBox Test" TRUEPIXEL
       
   @ 10, 10 ComboBox oCbx Var cVar Size 100, 150 Items aItems Of oDlg Pixel ;
      On Change( Muestrame( oCbx, oDlg ) ) Style CBS_DROPDOWN UPDATE

   oCbx : lIncSearch := .t.
       
   Activate Dialog oDlg Center

Return Nil
   
//----------------------------------------------------------------------------//
Function Muestrame( oCbx, oDlg )

   LOCAL cText

   ? aItems[ oCbx : nAt ]

   //cText := aItems[ oCbx:nAt ]

   //oDlg:SetText( cText )
   oDlg:Refresh()

Return( .T. )
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby horacio » Thu Nov 09, 2017 11:58 am

bChange trabaja si recorres los items con el mouse o con el teclado pero no funciona si lo haces con la búsqueda incremental, en ese caso bChange no se ejecuta. Fijate que si pulsas la "U" en el get del combobox aparecerá "UNO" pero el msgbox no se ejecuta. Confirmame si lo que digo es cierto. Gracias

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Postby karinha » Thu Nov 09, 2017 1:28 pm

Horacio, mira se asi ayuda:

Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oDlg, oCbx, cDia

   // DEFINE DIALOG oDlg
   DEFINE DIALOG oDlg FROM 10, 10 TO 20, 50 ;
     TITLE "DropDown ComboBox Test"

   @ 1, 4 SAY "Digite dia y use <Enter> " OF oDlg SIZE 100, 10

   @ 2, 3 COMBOBOX oCbx VAR cDia OF oDlg SIZE 100, 300 ;
      ITEMS { "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" } ;
      STYLE CBS_DROPDOWN ON CHANGE QueDia( cDia )

      /* ;
      VALID( QueDia( cDia ) ) */


   oCbx:oGet:bKeyChar = { | nKey | If( nKey == VK_RETURN,;
                                     ( cDia := oCbx:oGet:GetText(), ;
                                       Eval( oCbx:bChange() ) ),),  ;
                                       oCbx:GetKeyChar( nKey ) }

   oCbx:lIncSearch := .T.

   ACTIVATE DIALOG oDlg CENTERED

return nil

function QueDia(cDia)

   MsgAlert("Hoy día es: "+cDia)

Return( .T. )
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox y búsqueda incremental

Postby horacio » Thu Nov 09, 2017 2:10 pm

Muchas gracias Joao por tu tiempo. En tu ejemplo una vez hecha la búsqueda incremental tengo que digitar una tecla ( VK_RETURN ) para que se ejecute el bChange, sin dudas sería una posible solución pero el comportamiento correcto sería que una vez que ingrese, por ejemplo el caracter "L" me aparezca "Lunes" y se ejecute el bChange cosa que no sucede. Veré como me resulta tu solución para mi proyecto. Nuevamente muchas gracias.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 7 guests