Página 1 de 1

Funcionamiento de Listbox

Publicado: Vie Ene 23, 2009 9:08 am
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?

Funcionamiento de Listbox

Publicado: Vie Ene 23, 2009 12:31 pm
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

Funcionamiento de Listbox

Publicado: Vie Ene 23, 2009 8:38 pm
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

Funcionamiento de Listbox

Publicado: Dom Ene 25, 2009 12:21 am
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