Combobox y búsqueda incremental

Post Reply
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Combobox y búsqueda incremental

Post by horacio »

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


#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
User avatar
karinha
Posts: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Post by horacio »

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
User avatar
karinha
Posts: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

Code: Select all | Expand


#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: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

Code: Select all | Expand


#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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Post by horacio »

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
User avatar
karinha
Posts: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

Horácio, cambia asi:

Code: Select all | Expand



    @ 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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Post by horacio »

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
User avatar
karinha
Posts: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

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

Image

Code: Select all | Expand


#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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Post by horacio »

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
User avatar
karinha
Posts: 7963
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 5 times
Contact:

Re: Combobox y búsqueda incremental

Post by karinha »

Horacio, mira se asi ayuda:

Code: Select all | Expand


#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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Combobox y búsqueda incremental

Post by horacio »

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
Post Reply