Página 1 de 1

OnChange del ComboBox

Publicado: Lun Ene 30, 2006 10:00 pm
por Xevi
Fijaros en el proyecto adjunto...
¿Porque el OnChange creado desde código lanza un error????
Sin embargo si el mismo código lo ejecuto utilizando el Evento OnChange
generado desde el IDE, funciona perfectamente.
¿?¿?¿?
Esa es mi duda.
Un Saludo,
Xevi.


Attached files ComboBox.zip (1.7 KB)Â

OnChange del ComboBox

Publicado: Mar Ene 31, 2006 8:48 am
por CapelSoft
Xevi,
Mira la definición del combo:
WITH OBJECT oCboxNxx := TComboBox():New( self )
:aItems := { "1", "2", "3" }
:SetBounds( 10, 35, 200 )
:OnChange := {|o,n| MsgInfo( o:aItems[n] ) }
:Create()
END
Y ahora la del método:
METHOD Combobox1Change( oSender, nIndex, nOldIndex ) CLASS TForm1
MsgInfo( oSender:aItems[nIndex] )
RETURN Nil
El problema está en :
oCboxNxx != oComboBox1
Saludos,
José Luis Capel
Xevi escribió:
>
> Fijaros en el proyecto adjunto...
> ¿Porque el OnChange creado desde código lanza un error????
>
> Sin embargo si el mismo código lo ejecuto utilizando el Evento OnChange
> generado desde el IDE, funciona perfectamente.
>
>
> ¿?¿?¿?
> Esa es mi duda.
>
> Un Saludo,
> Xevi.
>
>

OnChange del ComboBox

Publicado: Mar Ene 31, 2006 9:45 am
por Xevi
José Luis
Son dos métodos distintos.
Uno pertenece al evento que dispara el OnChange del oComboBox creado desde
el IDE
> METHOD Combobox1Change( oSender, nIndex, nOldIndex ) CLASS TForm1
> MsgInfo( oSender:aItems[nIndex] )
> RETURN Nil
y funciona PERFECTAMENTE...
Pero el otro es un objeto creado "a pelo" desde programa
> WITH OBJECT oCboxNxx := TComboBox():New( self )
> :aItems := { "1", "2", "3" }
> :SetBounds( 10, 35, 200 )
> :OnChange := {|o,n| MsgInfo( o:aItems[n] ) }
> :Create()
> END
este es el que lanza el error, cuando en apariencia sería lo mismo, el
evento OnChange del objeto oCboxNxx que el ecento OnChange del objeto
oCbombobox1
Igual no me he explicado bien, pero creo que queda bastante claro que SON
DOS OBJETOS INDEPENDIENTES, que cada uno tiene SU evento OnChange.
Un Saludo,
Xevi.
"José Luis Capel" <capelsoft@terra.es> escribió en el mensaje
news:43df1641$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Mira la definición del combo:
>
> WITH OBJECT oCboxNxx := TComboBox():New( self )
> :aItems := { "1", "2", "3" }
> :SetBounds( 10, 35, 200 )
> :OnChange := {|o,n| MsgInfo( o:aItems[n] ) }
> :Create()
> END
>
> Y ahora la del método:
>
> METHOD Combobox1Change( oSender, nIndex, nOldIndex ) CLASS TForm1
> MsgInfo( oSender:aItems[nIndex] )
> RETURN Nil
>
> El problema está en :
>
> oCboxNxx != oComboBox1
>
> Saludos,
> José Luis Capel
>
> Xevi escribió:
>> Fijaros en el proyecto adjunto...
>> ¿Porque el OnChange creado desde código lanza un error????
>>
>> Sin embargo si el mismo código lo ejecuto utilizando el Evento OnChange
>> generado desde el IDE, funciona perfectamente.
>>
>>
>> ¿?¿?¿?
>> Esa es mi duda.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>

OnChange del ComboBox

Publicado: Mar Ene 31, 2006 9:53 am
por joseluis
Xevi,
>
> Igual no me he explicado bien, pero creo que queda bastante claro que SON
> DOS OBJETOS INDEPENDIENTES, que cada uno tiene SU evento OnChange.
>
Te has explicado correctamente. Aquí­ tienes el combo funcionando
METHOD FormShow( oSender ) CLASS TForm1
local oCboxNxx
WITH OBJECT oCboxNxx := TComboBox():New( self )
:aItems := { "1", "2", "3" }
:SetBounds( 10, 35, 200 )
:OnChange := {|o,n, m| MsgInfo( o:aitems[n]), .T. }
:Create()
END
RETURN Nil
Una pregunta... ¿por que en el OnShow?
Saludos,
José Luis Capel

OnChange del ComboBox

Publicado: Mar Ene 31, 2006 10:24 am
por jfgimenez
Xevi,
> ¿Porque el OnChange creado desde código lanza un error????
El problema está en el valor de retorno del evento. Hay que devolver .T.,
..F. o Nil, pero como has creado el evento como bloque de código, el valor de
retorno corresponde a la llamada a MsgInfo(), que es numérico.
Tienes que añadir un ,Nil al final de bloque de código, o como te ha puesto
José Luis, un .T.
En el caso del evento desarrollado como método, tienes un RETURN Nil, y por
eso funciona bien.
--
Un saludo,
José F. Giménez

OnChange del ComboBox

Publicado: Mar Ene 31, 2006 10:56 am
por Xevi
Gracias.
Con el valor de retorno,... OK.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:[email=43df26c1@ozsrvnegro.ozlan.local...]43df26c1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>>
>> Igual no me he explicado bien, pero creo que queda bastante claro que SON
>> DOS OBJETOS INDEPENDIENTES, que cada uno tiene SU evento OnChange.
>>
>
> Te has explicado correctamente. Aquí tienes el combo funcionando
>
> METHOD FormShow( oSender ) CLASS TForm1
> local oCboxNxx
>
> WITH OBJECT oCboxNxx := TComboBox():New( self )
> :aItems := { "1", "2", "3" }
> :SetBounds( 10, 35, 200 )
> :OnChange := {|o,n, m| MsgInfo( o:aitems[n]), .T. }
> :Create()
> END
>
> RETURN Nil
>
> Una pregunta... ¿por que en el OnShow?
>
> Saludos,
> José Luis Capel
>