ComboBox DropDown modificacion a clase

ComboBox DropDown modificacion a clase

Postby ratazul » Mon Apr 18, 2016 7:32 pm

He modificado la clase combobox, ya que estoy utilizando el estilo DropDown, el cual al escribir algo en el get para realizar una búsqueda incremental en el arreglo de la lista de opciones que tengo, al presionar RETURN, no evalúa el siguiente combobox en un when y se salta a otro control.

Las lineas que se agregaron en la combobox son las siguientes lineas:


METHOD GetKeyChar( nKey ) CLASS TComboBox

local nAt, cText
local cSearch

if ( nKey == VK_TAB .and. ! GetKeyState( VK_SHIFT ) ) .or. nKey == VK_RETURN // mi modificacion
**************
if ::bChange != nil // estas son la lineas que se agregaron,
Eval( ::bChange, Self, ::VarGet() ) // ahora funciona a la perfeccion
endif // sin ocasionar problemas
**************
::oWnd:GoNextCtrl( ::hWnd )
return 0
else
if nKey == VK_TAB .and. GetKeyState( VK_SHIFT )
::oWnd:GoPrevCtrl( ::hWnd )
return 0
endif
endif

Espero esto sea de utilidad para aquellos que experimentan con esta clase.

Saludos
ratazul
 
Posts: 4
Joined: Wed Aug 31, 2011 8:55 pm

Re: ComboBox DropDown modificacion a clase

Postby cnavarro » Mon Apr 18, 2016 7:58 pm

Puedes poner un pequeño ejemplo de implementacion para entender bien tu objetivo?

You can put a small example of implementation to better understand your goal?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: ComboBox DropDown modificacion a clase

Postby ratazul » Tue Apr 19, 2016 3:37 pm

static function AddModAlumno( oRec, lEmpty )

local oDlg, oBtn := Array(2), cTitle, cFoto, oFoto, lLic := .F.

IF( lEmpty,;
( cTitle := LoadString( , 10015 ), cFoto := cDirImg+"Foto.png" ),;
( cTitle := LoadString( , 10016 ), cFoto := cDirImg+"DSCN"+oRec:Foto+".jpg" ) )

IF !FILE( cFoto ) .or. EMPTY( oRec:Foto )
cFoto := cFoto := cDirImg+"Foto.png"
ENDIF

IF( oRec:NIvel_Escolar == "LICENCIATURA", lLic := .T., )

DEFINE DIALOG oDlg RESOURCE "DLGALU" TITLE cTitle PIXEL TRANSPARENT

REDEFINE GET oRec:Matricula ID 601 OF oDlg PICT "@!KS" UPDATE
REDEFINE GET oRec:Nombre ID 602 OF oDlg PICT "@!KS" UPDATE
REDEFINE GET oRec:Telefono ID 603 OF oDlg PICT "9999999999" UPDATE
REDEFINE GET oRec:CCT ID 604 OF oDlg PICT "@!KS" UPDATE
REDEFINE COMBOBOX oRec:Nivel_Escolar ITEMS aNivelEsc ID 605 OF oDlg // Aquí, despliega una lista, que tiene búsqueda incremental, cuando se presiona
// RETURN, evalúa el WHEN y salta dos controles del dialogo, sin permitir
// la selección del COMBOBOX donde se evalúa el WHEN. Con la modificación
// en la clase COMBOBOX, ahora trabaja perfectamente. Obvio deberá configurar
// el bChange del control. Lineas adelante se muestra como.
REDEFINE COMBOBOX oRec:Licenciatura ITEMS aLic ID 606 OF oDlg WHEN oRec:Nivel_Escolar == "LICENCIATURA" // Evalúa un WHEN
REDEFINE COMBOBOX oRec:Grado ITEMS aGrado ID 607 OF oDlg
REDEFINE COMBOBOX oRec:Grupo ITEMS aGrupo ID 608 OF oDlg
REDEFINE COMBOBOX oRec:Turno ITEMS aTurno ID 609 OF oDlg
REDEFINE CHECKBOX oRec:Cenlex ID 610 OF oDlg UPDATE
REDEFINE GET oRec:Cuenta_Cenlex ID 611 OF oDlg PICT "@!KS" UPDATE WHEN oRec:Cenlex
REDEFINE GET oRec:Beca ID 612 OF oDlg PICT "999" UPDATE
REDEFINE GET oRec:Descuento ID 613 OF oDlg PICT "999" UPDATE
REDEFINE COMBOBOX oRec:Estado ITEMS aEstado ID 614 OF oDlg
REDEFINE GET oRec:Foto ID 615 OF oDlg PICT "9999" UPDATE VALID( oRec:Foto := StrZero( Val( oRec:Foto ), 4, 0 ), oDlg:UpDate(), .T. )
REDEFINE IMAGE oFoto ID 616 OF oDlg FILE cFoto ADJUST
oFoto:Progress( .F. )

REDEFINE BTNBMP oBtn[1] WHEN oRec:Modified() RESOURCE "ACEPTAR" ID 617 OF oDlg ;
ROUND NOBORDER TRANSPARENT PROMPT "Aceptar" LEFT ;
ACTION ( oRec:Elaboro := AllTrim( cLogin ), oRec:Fecha_Hora := DateTime() ,oRec:Save(), oDlg:End() ) TOOLTIP { "Guardar" }
REDEFINE BTNBMP oBtn[2] RESOURCE "CANCELAR" ID 618 OF oDlg ;
ROUND NOBORDER TRANSPARENT PROMPT "Cancelar" LEFT ;
ACTION oDlg:End() TOOLTIP { "Cancelar" }

oDlg:lHelpIcon := .F.

AEval( oDlg:aControls, { |o| IF( o:ClassName == "TCOMBOBOX",;
( o:lIncSearch := .T., o:lCaseSensitive := .T. ),;
( o:nClrText := CLR_BLUE, o:nClrPane := nRGB( 0xFE, 0xFF, 0xDB ) ) ) } )

oDlg:aControls[5]:bChange := { || oRec:Nivel_Escolar := oDlg:aControls[5]:oGet:GetText(), oDlg:AEvalWhen(), oDlg:Update() } // Aquí como se realiza el bChange del control.

ACTIVATE DIALOG oDlg CENTERED

return nil

//----------------------------------------------------------------------------//
ratazul
 
Posts: 4
Joined: Wed Aug 31, 2011 8:55 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 64 guests