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)Â
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
OnChange del ComboBox
-
- Mensajes: 137
- Registrado: Vie Jul 29, 2005 8:49 am
- Ubicación: Valencia - España
- Contactar:
OnChange del ComboBox
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.
>
>
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
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.
>>
>>
>
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
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
>
> 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
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
> ¿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
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
>
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
>