Codigo Copiado, Y Uno De Ellos No Funciona


Ir a la página 1, 2  Siguiente

Objetivo: Codigo Copiado, Y Uno De Ellos No Funciona
Pues eso, que tengo este codigo (literalmente copiado de uno a otro), pero cada uno tiene un comportamiento diferente...y no se porque, a ver si me podeis echar un cable.

PUBLIC SUB Form_Close()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, deseo cerrar", "No, deseo cerrar")
CASE (1)
FMain.Visible = TRUE
ME.Close
END SELECT

END

PUBLIC SUB btn_SalirNuevo_Click()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, deseo cerrar", "No, deseo cerrar")
CASE (1)
FMain.Visible = TRUE
ME.Close
END SELECT

END


En teoria deberia de ocurrir lo mismo, tanto en un caso como en otro, pero no es asi.
Si cierro el formulario mediante el evento Form_Close, sale el Message.Warning y al cliquear en "Si, deseo cerrar", se cierra el formulario y se ve el otro formulario (FMain).

En cambio, si cierro mediante el btn_SalirNuevo_Click, me sale el Message.Warning, y al darle a que si quiero cerrar, parpadea y se mantiene el Mesage.Warning en pantalla, hasta que clikeo de nuevo en que si que quiero cerrar y ya sale correctamente.

Esto es debido a gambas o a que mi codigo esta mal escrito....pero si estuviese mal escrito, no funcionaria con el evento Form_Close no?

Salud y graciaas!!!

Perfil MP  
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Ya se lo que te pasa..... .

cuando pulsas el boton. y se ejecta
PUBLIC SUB btn_SalirNuevo_Click()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, deseo cerrar", "No, deseo cerrar")
CASE (1)

ME.Close
END SELECT

END


Al hacer ME.CLOSE,
se ejecuta tambien el evento... Form_Close (es como si estuvieran ligados...)

con lo cual te vuelve a repetir la pregunta.....

Codigo para solucionarlo (no lo preguntes al pulsal el boton)
PUBLIC SUB Form_Close()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, deseo cerrar", "No, deseo cerrar")
CASE (1)
FMain.Visible = TRUE
ME.Close
END SELECT

END

PUBLIC SUB btn_SalirNuevo_Click()

ME.Close

END



Y solo te lo va ha preguntar una vez.....¿facil no?


Nota:
Yo no conocia el evento Form_Close.... me lo acabas de enseñar tu...gracias...
A mi me pasaba algo parecido (salia de manera brusca cuando pulsaba la "X" del borde derecho superior , y lo que hacia en mis aplicaciones era quitar el borde del formulario (ya no aparecia la "X" de cerrar) y salia
pulsando un boton que contenia, el codigo me.close


Gracias, creo que te he resuelto tu problema....y el mio tambien.....


Julio

última edición por jsbsan el Domingo, 01 Agosto 2010, 13:14; editado 1 vez
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Mi gozo en un pozo.......



Aunque para salir "sales bien",si le dices que no quieres salir,sale de todos modos.....


No se como cancelar ese evento..... form_close()




¿alquien sabe como????

Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
YA LO TENGO........




Esta es la manera de "parar" un evento....

El codigo quedaria asi:

PUBLIC SUB Form_Close()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, cierro", "No, mejor vuelvo al programa...")
CASE (1)
FMain.Visible = TRUE
ME.Close

CASE (2)

STOP EVENT

END SELECT

END


Y el codigo del boton:
PUBLIC SUB btn_SalirNuevo_Click()

ME.Close

END



Jo.... que de cosas aprende uno respondiendo a dudas de otros....jajajajaj

Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Yo lo escribiría así. Creo que es más limpio y no es necesario usar SELECT para una sola condición.


PUBLIC SUB Form_Close()

IF Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, cierro", "No, mejor vuelvo al programa...") = 1 THEN
ME.Close
ELSE
STOP EVENT
ENDIF

END


Y el código del botón sin cambios.

Saludos

Perfil MP  
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Gracias a ambos por la ayuda, realmente era una tonteria bastante grande...

Lo he dejado tal que asi:
PUBLIC SUB Form_Close()

SELECT CASE Message.Warning("¿Seguro que desea cerrar?" & "\n" & "Podría perder el trabajo realizado hasta el momento",
"Si, deseo cerrar", "No, deseo cerrar")
CASE (1)
FMain.Visible = TRUE
ME.Close
CASE ELSE
STOP EVENT
END SELECT

END

PUBLIC SUB btn_SalirNuevo_Click()

FMain.Visible = TRUE
ME.Close

END


He dejado el SELECT CASE , porque personalmente me gusta mas, me queda como mas claro ir parte por parte, aunque con el IF es igual.

Realmente no hay diferencias entre uno y otro ¿no?

Muchas gracias de nuevoo!!

Perfil MP  
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Hombre, diferencias las hay y son precisamente en el uso que le damos, aunque las dos sean estructuras de control y hagan lo mismo.

Para el uso que le estás dando, es como matar moscas a cañonazos.

Perfil MP  
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
AnSnarkista:

Estoy preparando un programa para hacer "Un Presupuesto Familiar", que usa muchisimo la orden SELECT CASE,
de manera exhaustiva, y que con if.. then seria casi una locura hacerlo funcionar...


Ya me queda poco para terminarlo, una semana o asi,... (espero... ) en cuanto este listo, subo el código a mi blog y a la comunidad...


Saludos

Julio

Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
¿Pero ocupa mas recursos o algo o es que simplemente SELECT CASE se usa para cuando hay muchas opciones concretas que elegir?

Si pudieras explicarme un poco porqué...estaria muuy agradecido.


Muchas gracias de todas formas

Perfil MP  
Objetivo: Re: Codigo Copiado, Y Uno De Ellos No Funciona
Pues mira cuando hay muchas comparaciones a realizar....

Fijate en este ejemplo que te pongo, primero hay un
if... then,
y luego dentro de el hay un

¿Te imaginas hacer los con 11
if..then,
,, con sus ,,, y que se te olvide alguno,, que lio,no?,, ¿¿¿por donde empezar a buscar el error????

Sin embargo con el Select Case queda todo mas claro...

FOR c = 0 TO FMain.TableViewdatos.rows.count - 1
tipo = Left(FMain.TableViewdatos[c, 0].text, 3)
restotipo = Right(FMain.TableViewdatos[c, 0].text, 2)


IF restotipo <> "01" THEN
SELECT CASE tipo
CASE "01."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalingreso)

CASE "02."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosAli)

CASE "03."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosRopa)

CASE "04."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosOtroGastos)

CASE "05."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvehiculos)

CASE "06."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalocio)


CASE "07."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalformacion)

CASE "08."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvivienda)

CASE "09."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalmascotas)

CASE "10."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvarios)

CASE "11."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalahorro)

END SELECT

ENDIF
NEXT


Espero que te sirva el ejemplo...

Un saludo

Julio

última edición por jsbsan el Domingo, 01 Agosto 2010, 21:11; editado 2 veces
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4365s (PHP: -58% SQL: 158%)
Consultas SQL: 44 - Debug off - GZIP Activado