Página 1 de 1

para Xevi.

Publicado: Vie May 04, 2007 4:40 am
por Pedro de Leon Rodas
TE AGRADEZCO TODA AYUDA.
HICE LA PRUEBA Y NO FUNCIONA
¿ O QUE ESTOY HACIENDO MAL ?
TENGO UN BOTON QUE LLAMA AL FORMULARIO CLIENTES
EJEMPLO:
Clientes():new( self ):show()
COMO O EN DONDE PONGO ESTA FUNCION O PROCEDURE
GRACIAS DE NUEVO.
PROCEDURE xFrmClients(oSender)
local nAscan
Local aForms := Application:aForms
ProcessMessages()
If (nAscan := aScan( aForms , {|o| o:ClassName() ==
TFrmClients():ClassName() } )) = 0
If (nAscan := aScan( aForms , {|o| o:ClassName() ==
TFrmEmpreses():ClassName() .or. o:ClassName() ==
TFrmIndexar():ClassName() } )) # 0
xSortir( oSender )
Return
EndIf
Else
aForms[nAScan]:SetFocus()
Return
EndIf
TFrmClients():New():Show()
RETURN

para Xevi.

Publicado: Vie May 04, 2007 8:33 am
por pablogarciau
Te escribo esto al vuelo, pruebalo y me avisas como te fue
Saludos
Si estas abriendo el formulario clientes desde un boton te sugiero las
siguientes 2 opciones :
1) Si quieres que simplemente no se pueda volver a hacer click en el
boton hasta que se cierre el formulario clientes:
En el formulario que contiene a oBotonClientes :
DATA oClientes
En el evento OnClick del boton :
oSender:lEnabled:=.f.
oClientes:=TClientes():new( self ):show()
En el evento OnDestroy() de oClientes :
::oParent:oBotonClientes:lEnabled:=.t.
2) Si quieres que en caso de que oClientes ya este abierto y si el
usuario da click nuevamente en el boton oBotonClientes el formulario
oClientes reciba el foco :
En el formulario que contiene a oBotonClientes :
DATA oClientes
DATA lClientesAbierto INIT .f.
En el evento onClick de oBotonClientes :
IF !::lClientesAbierto
oClientes():=TClientes():new( self ):show()
lClientesAbierto:=.t.
ELSE
oClientes:SetFocus()
END
En el evento OnDestroy de oClientes :
::Parent:lClientesAbierto:=.f.

para Xevi.

Publicado: Vie May 04, 2007 9:12 am
por Xevi
Pedro,
Sencillo,
en lugar de poner
Clientes():new( self ):show()
en el botón que llama al formulario CLIENTES...
llama a esta procedure!!!
xFrmClients(oSender)
ésta será la encargada de comrpobar si esta abierta y de no estarlo, crearla
y si ya está creada, mostrarla.
OJO con los nombres de Formularios que yo utilizo en el ejemplo y los tuyos
que utilizas realmente en el proyecto!!!
Un Saludo,
Xevi.
"Pedro de Leon Rodas" <pedro_deleon@hotmail.com> escribió en el mensaje
news:[email=463a9cf3@ozsrv2.ozlan.local...]463a9cf3@ozsrv2.ozlan.local...[/email]
> TE AGRADEZCO TODA AYUDA.
>
> HICE LA PRUEBA Y NO FUNCIONA
> ¿ O QUE ESTOY HACIENDO MAL ?
>
> TENGO UN BOTON QUE LLAMA AL FORMULARIO CLIENTES
> EJEMPLO:
> Clientes():new( self ):show()
>
> COMO O EN DONDE PONGO ESTA FUNCION O PROCEDURE
>
> GRACIAS DE NUEVO.
>
>
>
> PROCEDURE xFrmClients(oSender)
> local nAscan
> Local aForms := Application:aForms
>
> ProcessMessages()
>
> If (nAscan := aScan( aForms , {|o| o:ClassName() ==
> TFrmClients():ClassName() } )) = 0
> If (nAscan := aScan( aForms , {|o| o:ClassName() ==
> TFrmEmpreses():ClassName() .or. o:ClassName() ==
> TFrmIndexar():ClassName() } )) # 0
> xSortir( oSender )
> Return
> EndIf
> Else
> aForms[nAScan]:SetFocus()
> Return
> EndIf
>
> TFrmClients():New():Show()
>
> RETURN
>
>
>