Visual Basic - Problema con Msgbox

Life is soft - evento anual de software empresarial
 
Vista:

Problema con Msgbox

Publicado por Manelnight (69 intervenciones) el 08/11/2002 18:27:33
Hola a todos.
Estoy haciendo un programa en el que quiero que los Msgbox no sean los típicos del vb6.0, por tanto stoy haciendo uno a mi manera.
He creado un formulario que se llama FMsg2botones ( equivaldría a un msgbox con los botones de aceptar y cancelar.), le he puesto un label (LTitulo)como barra de titulo, un control Image(Icono) para meterle una imgaen de interrogación o de exclamacion, etcc. , y otro label (Ltexto) donde introduciré el texto del mensaje.
A este formulario lo llamo desde otros mediante una funcion que lo configura y que es la siguiente:

Public Function Msg2botones(Titulo As String, Texto As String, Icono As String)
Load FMsg2Botones 'Cargo el Formulario msg2Botones
'A continuaíón lo configuro
FMsg2Botones.LTitulo.Caption = Titulo
FMsg2Botones.LTexto.Caption = Texto
On Error Resume Next
FMsg2Botones.Img.Picture = LoadPicture(App.Path & "\Ico\" & Icono)
FMsg2Botones.Show vbModal ' Muestro el formulario
End Function

Lo llamo de esta manera:
Call Msg2botones("Error numérico", "El Código de entrada sólo puede ser numérico", "Stop.ic_")

Pues aqui viene mi pregunta: ¿Como puedo hacer para saber si el usuario a pulsado el boton ACEPTAR o el botón CANCELAR, ya que depende del boton que pulse el programa tiene que hacer una u otra cosa.

A ver si me echais una mano.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con Msgbox

Publicado por Pancho (53 intervenciones) el 08/11/2002 19:06:28
Hola
Pues la solucion es simple, debes trabajar con eventos, me explico, en el formulario Msg2Botones declaras

Event CualBoton(ByVal miBoton as Integer)
luego en el evento click de cada boton escribes

Sub Aceptar_Click()
Unload Me
RaiseEvent CualBoton(vbOK)
End Sub
Sub Cancelar_Click()
Unload Me
RaiseEvent CualBoton(vbCancel)
End Sub
La funcion FMsg2Botones quedaria asi:
Public Function FMsg2Botones(miForm as Form, Titulo As String, Texto As String, Icono As String)
'A continuaíón lo configuro
miForm.LTitulo.Caption = Titulo
miForm.LTexto.Caption = Texto
On Error Resume Next
miForm.Img.Picture = LoadPicture(App.Path & "\Ico\" & Icono)
miForm.Show vbModal ' Muestro el formulario
End Function

'En el formulario principa donde quieres usar MsgBox
'Aqui solo puedes declarar con WithEvents en formularios o
'modulos de clase
Dim WithEvents fMsgBox as Msg2Botones
Sub Form_Load()
Set fMsgBox = New Msg2Botones 'Instanciamos la clase
End Sub
Sub Form_Unload()
Set fMsgBox= Nothing
End Sub
'Aqui esta el nuevo evento que declaramos
Sub fMsgBox_CualBoton(ByVal miBoton as Integer)
select case miBoton
case vbOK
debug,print "Pulsamos Aceptar"
case vbCancel
debug,print "Pulsamos Cancelar"
end select
End Sub
Si necesitas llamarlo desde otra funcion o procedimiento debes pasarlo como parametro a ese procedimiento y luego llamar a FMsgBox y el se devolvera a donde fue creado.
Espero que te ayude.

Saludos

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con Msgbox

Publicado por Elliott (42 intervenciones) el 08/11/2002 20:18:52

No te compliques tanto al vida puedes utilizar esto:

Declaras una variable global en un módulo de tipo Booleano
por Ejemplo:

Global bMsgBox as Boolean

y luego programas en el cmd aceptar
Sub CmdAceptar_Click()
bMsgBox = True
end Sub

Sub CmdCancelar_Click()
bMsgBox = False
end Sub

y desde cualquier módulo solo pregutas si bMsgBox es Verdadero nada más. Ojo que al hacerla llamada a tu formulario del MsgBox tienes que llamarlo en modo modal

frmMsgbox.Sho vbModal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con Msgbox

Publicado por Jonathan (1 intervención) el 08/11/2002 20:02:06
Si no te quieres comer mucho la cabeza, declara una variable pública (por ejemplo: Public AceptarOCancelar As Boolean) en un módulo. Después, cuando se pulse el botón Aceptar haces AceptarOCancelar = True, y cuando se pulse Cancelar AceptaroCancelar = False. De esta forma, y al ser pública la varible, si tiene valor True sabes que se pulsó Aceptar y, si tiene valor False, sabes que se pulsó Cancelar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias a los tres

Publicado por Manelnight (69 intervenciones) el 09/11/2002 02:06:42
Gracias a los tres por vuestra ayuda. Me quedo con la opción de Jonathan porque es la que mejor entiendo y tiene menos follón. En cuanto a la de Pancho, la veo demasiado complicada para mi.
Gracias a los tres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar