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