Combobox (DropDown) no procesa correctamente el Valid

Combobox (DropDown) no procesa correctamente el Valid

Postby AngelSalom » Mon Sep 17, 2018 9:30 am

En este ejemplo, creando un COMBOBOX desde código fuente se procesa correctamente el Valid al salir del control, en cambio desde recursos no es así.

Esto funciona OK
Code: Select all  Expand view
#include "fivewin.ch"
Function Main()
local oDlg, cCombo := "2", cGet:=Space(10)
   local aItems := { "1", "2", "3" }
   DEFINE DIALOG oDlg FROM 2, 2 TO 18, 60 TITLE "Combo" STYLE nOr( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, 4 )
   @ 1, 2 GET cGet
   @ 2, 2 COMBOBOX cCombo ITEMS aItems SIZE 200, 100 VALID (MsgInfo("Hola"),.t.)
   ACTIVATE DIALOG oDlg CENTERED
 Return (nil)  
 


Este ejemplo (combos.prg del samples) no funciona correctamente

Code: Select all  Expand view
// Showing the use of different styles of ComboBoxes controls
#include "FiveWin.ch"
#include "Combos.ch"
//----------------------------------------------------------------------------//
function Main()
   local oDlg, oSay
   local oCbx1, oCbx2, oCbx3
   local cItem1, cItem2 := "One", cItem3, cItem4 := "None"
   SET _3DLOOK ON
   // SkinButtons()
   DEFINE DIALOG oDlg RESOURCE "Combos"
   REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "Uno", "Dos", "Tres" } ;
      ID ID_SIMPLE OF oDlg ;
      ON CHANGE ( cItem4 := cItem1, oSay:Refresh() );
      VALID (MsgInfo("valid"), cItem4 := cItem1, oSay:Refresh(), .t. )
 
   REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS { "One", "Two", "Three" } ;
      ID ID_DROPDOWN OF oDlg ;
      STYLE CBS_DROPDOWN ;
      ON CHANGE ( cItem4 := cItem2, oSay:Refresh() ) ;
      VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
                  oCbx2:Add( oCbx2:oGet:GetText() ),), .t. )
                 
   oCbx2:oGet:bKeyDown = { | nKey | SearchItem( nKey, oCbx2 ) }
                 
   REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
      ID ID_DROPDOWNLIST OF oDlg ;
      ON CHANGE ( cItem4 := cItem3, oSay:Refresh() ) ;
      VALID ( cItem4 := cItem3, oSay:Refresh(), .t. )
   REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"
   ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
function SearchItem( nKey, oCbx )
   local nAt
   if Len( AllTrim( oCbx:oGet:GetText() ) ) == 1
      if ( nAt := AScan( oCbx:aItems, { | c | Left( c, 1 ) == AllTrim( oCbx:oGet:GetText() ) } ) ) != 0
         oCbx:oGet:SetText( oCbx:aItems[ nAt ] )
         return 0
      endif
   endif
 
return nKey        
//----------------------------------------------------------------------------//
procedure AppSys
return
//----------------------------------------------------------------------------//


Lo que ocurre es que ejecuta el valid al recibir el foco y no al salir como debería ser.
¿Alguna pista?
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby D.Fernandez » Mon Sep 17, 2018 7:24 pm

Hola Angel, prueba así por favor.

cCombo:bValid:= {|| MsgInfo( "Hola") , .t.}
o
cCombo:bLostFocus := .......
Espero te funcione.
Saludos
Dario Fernandez
FWH 22.12, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
D.Fernandez
 
Posts: 455
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby AngelSalom » Mon Sep 17, 2018 9:27 pm

D.Fernandez wrote:Hola Angel, prueba así por favor.

cCombo:bValid:= {|| MsgInfo( "Hola") , .t.}
o
cCombo:bLostFocus := .......
Espero te funcione.
Saludos


Ya lo probé, pero sin éxito, gracias.
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby karinha » Tue Sep 18, 2018 1:10 pm

Code: Select all  Expand view

   @ 2, 2 COMBOBOX cCombo ITEMS aItems SIZE 200, 100 ;
          STYLE CBS_DROPDOWN                         ;
          VALID (MsgInfo("Hola"),.t.)
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7351
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby AngelSalom » Tue Sep 18, 2018 2:03 pm

karinha wrote:
Code: Select all  Expand view

   @ 2, 2 COMBOBOX cCombo ITEMS aItems SIZE 200, 100 ;
          STYLE CBS_DROPDOWN                         ;
          VALID (MsgInfo("Hola"),.t.)
 


Gracias Joao, cuando no funciona es con el REDEFINE que es como lo necesito :cry: :cry:
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby karinha » Tue Sep 18, 2018 2:35 pm

// SAMPLES\COMBOS.PRG - Modificado. 18/09/2018 - kapiabafwh@gmail.com

Code: Select all  Expand view

// Showing the use of different styles of ComboBoxes controls

#include "FiveWin.ch"
#include "Combos.ch"

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

function Main()

   local oDlg, oSay
   local oCbx1, oCbx2, oCbx3
   local cItem1, cItem2 := "                  ", cItem3, cItem4 := "None"
   local aItems := { "D-3200 D3100",;
                     "D-3200W/18 D3100W",;
                     "D-7000W/18 D3200",;
                     "D-90 D-3200",;
                     "D3100 D-3200W/18",;
                     "D3100W D5100",;
                     "D3200 D5200",;
                     "D5100 D7000",;
                     "D5200 D7000W/18",;
                     "D7000 D90",;
                     "D90 D-90" }

   SET _3DLOOK ON

   // SkinButtons()

   DEFINE DIALOG oDlg RESOURCE "Combos"

   REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ;
      ID ID_SIMPLE OF oDlg ;
      ON CHANGE ( cItem4 := cItem1, oSay:Refresh(), oCbx1:Refresh() ) ;
      VALID ( cItem4 := cItem1, oSay:Refresh(), oCbx1:Refresh(), .t. )
     
   REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS aItems ;
      ID ID_DROPDOWN OF oDlg ;
      STYLE CBS_DROPDOWN ;
      ON CHANGE ( cItem4 := cItem2, oSay:Refresh(), oCbx2:Refresh() ) ;
      VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
                  oCbx2:Add( oCbx2:oGet:GetText() ),), oCbx2:Refresh(), .t. )
                 
   REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
      ID ID_DROPDOWNLIST OF oDlg ;
      ON CHANGE ( cItem4 := cItem3, oSay:Refresh(), oCbx3:Refresh() ) ;
      VALID ( cItem4 := cItem3, oSay:Refresh(), oCbx3:Refresh(), .t. )

   REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"

   ACTIVATE DIALOG oDlg CENTERED

return nil

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


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

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby AngelSalom » Tue Sep 18, 2018 8:18 pm

Si pones un Msginfo en el Valid verás que salta cuando recibe el foco, no así cuando se sale del control que sería lo lógico.

Code: Select all  Expand view
REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS aItems ;
      ID ID_DROPDOWN OF oDlg ;
      STYLE CBS_DROPDOWN ;
      ON CHANGE ( cItem4 := cItem2, oSay:Refresh(), oCbx2:Refresh() ) ;
      VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
                  oCbx2:Add( oCbx2:oGet:GetText() ),), oCbx2:Refresh(), MSGINFO ('HOLA'), .t. )
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Combobox (DropDown) no procesa correctamente el Valid

Postby AngelSalom » Wed Sep 26, 2018 9:09 am

Bueno, solucionado, cuando se trata de un CBS_DROPDOWN el valid hay que ponerlo en el GET del combo, así :

Code: Select all  Expand view
oCbx2:oGet:bValid:={|| Msginfo ('valid'), .T.}      
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 32 guests