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.

Funcionamiento de Listbox

Foro público de Xailer en español
Responder
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Funcionamiento de Listbox

Mensaje por Jesus Semper »

Desde un Formulario TForm1 llamo a otro TForm2 que contiene un Listbox con
varias opciones.
La llamada la realizo mediante:
TForm2():New( Self ):ShowModal()
El programa EquiTrabajos.prg que contiene el TForm2 es:
--------------------------------------------------------
/*
* Fichero: EquiTrabajos.prg
*/
#include "Xailer.ch"
CLASS TForm2 FROM TForm
COMPONENT oListbox1
COMPONENT oLabel1
METHOD CreateForm()
METHOD Listbox1Click( oSender )
METHOD FormInitialize( oSender )
ENDCLASS
#include "EquiTrabajos.xfm"
//---------------------------------------------------------- --------------------
METHOD Listbox1Click( oSender ) CLASS TForm2
LOCAL nIndice := oSender:GetCurSel()
MsgInfo("Ha elegido la opcion:" + Str(nIndice) + chr(13)+;
oSender:aItems[nIndice])
// Esto cambia el dato en TForm1 que es el padre de TForm2
::oParent:oLabel1:cText := oSender:aItems[nIndice]
oSender:oParent:Close() // ¿Cierro el formulario?
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD FormInitialize( oSender ) CLASS TForm2
::nTop := 0
::nLeft := 220
// Poner un dato que hay en el formulario llamador
::oLabel1:cText := ::oParent:oImage23:oPicture:cName
::oListbox1:SetFocus() // Me aseguro de que tenga el foco
RETURN Nil
//---------------------------------------------------------- --------------------
Pretendo que aparezca el Listbox y cuando pulse con el raton en una opcion
este dato se devuelva en otro control del llamador (eso lo hace) y se cierre
la ventana del TForm2.
Sin embargo la actuacion no es la que deseo: Cuando selecciono por primera
vez una opcion del Listbox, consigue cambiar el dato del TForm1 pero no se
cierra la ventana TForm2. Tengo que seleccionar por segunda vez cualquier
opcion y entonces hace ambas cosas.
¿Que estoy haciendo mal?
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Funcionamiento de Listbox

Mensaje por notengo »

Jesus,
con estos cambios deberí­a funcionar correctamente:
> TForm2():New( Self ):ShowModal()
WITH OBJECT TForm2():New( Self )
:Create()
:ShowModal()
END
También he cambiado esto:
> METHOD Listbox1Click( oSender ) CLASS TForm2
> oSender:oParent:Close() // ¿Cierro el formulario?
::Close()
Si no consigues echarlo a andar te enví­o un ejemplo funcionando.
Saludos,
José Lalí­n
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Funcionamiento de Listbox

Mensaje por Jesus Semper »

Gracias por la respuesta tan inmediata.
He probado lo que me dices y se sigue comportando igual.
No lo había dicho pero uso xAiler 2.0 ¿tendra algo que ver?
Salu2
"José Lalín" <notengo@correo.com> escribió en el mensaje
news:4979ab2d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Jesus,
>
> con estos cambios debería funcionar correctamente:
>
>> TForm2():New( Self ):ShowModal()
>
> WITH OBJECT TForm2():New( Self )
> :Create()
> :ShowModal()
> END
>
> También he cambiado esto:
>
>> METHOD Listbox1Click( oSender ) CLASS TForm2
>> oSender:oParent:Close() // ¿Cierro el formulario?
> ::Close()
>
> Si no consigues echarlo a andar te envío un ejemplo funcionando.
>
> Saludos,
> José Lalín
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Funcionamiento de Listbox

Mensaje por Jesus Semper »

¡ Ya esta !
El problema lo generaba yo: despues de la llamada al TForm2 tambien tenia
otra llamada a otro metodo
y en este otro volvia a llamar a TForm2 con lo que me parecia que no salia
del ListBox cuando en realidas
lo que ocurria es que volvia a presentarmelo.... todo tan rapido que me ha
costado darme cuenta del problema.
Muchas gracias.
"José Lalín" <notengo@correo.com> escribió en el mensaje
news:4979ab2d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Jesus,
>
> con estos cambios debería funcionar correctamente:
>
>> TForm2():New( Self ):ShowModal()
>
> WITH OBJECT TForm2():New( Self )
> :Create()
> :ShowModal()
> END
>
> También he cambiado esto:
>
>> METHOD Listbox1Click( oSender ) CLASS TForm2
>> oSender:oParent:Close() // ¿Cierro el formulario?
> ::Close()
>
> Si no consigues echarlo a andar te envío un ejemplo funcionando.
>
> Saludos,
> José Lalín
Responder