Pues si tanto insisten... este es el código del Form llamado FMensaje.frm:
==========================================================
Private Sub Bt1_Click()
Resp = 1
Unload FMensaje
End Sub
Private Sub Bt2_Click()
Resp = 2
Unload FMensaje
End Sub
Private Sub Form_Activate()
If Bt2.Visible = True Then
Bt2.SetFocus
Else
Bt1.SetFocus
End If
End Sub
--------------------------------------------------------------------------------------------------
Este Form tiene:
10 cuadros Image, nombrados desde Ima(0) hasta Ima(9),
2 CommandButton llamados Bt1 y Bt2,
2 Label llamadas LMen1 y LMen2,
1 Frame llamado Cuadro
Hasta ahí el Form.
Esta es la Public Sub que recibe los parámetros y maneja al Form anterior, se debe ubicar en un módulo para que puedan accederla todos los Forms del proyecto:
Public Sub MENSAJE(BarrTitu As String, LTex1 As String, LTex2 As String, BCap1 As String, BCap2 As String, Ico As Integer)
Dim Lar1 As Integer, Lar2 As Integer, LarM As Integer, S As Integer
'Los argumentos a pasarle son 4 cadenas y un entero:
'Las 4 cadenas son: el texto a mostrar en la barra de título, el texto de la primera línea 'del mensaje, el de la 2da línea, el Caption del 1er botón, el Captio del 2do botón, y un 'dígito que le hará mostrar tal o cual imagen en la Ima(x) correspondiente.
'Lar1 y Lar2 contendrá los largos de las labels que son la primera y la segunda
'líneas del mensaje
For S = 0 To 9
FMensaje.Ima(S).Visible = False
Next S
FMensaje.Caption = BarrTitu
FMensaje.LMen1.Caption = LTex1
FMensaje.LMen2.Caption = LTex2
FMensaje.Bt1.Caption = BCap1
FMensaje.Bt2.Caption = BCap2
FMensaje.Ima(Ico).Visible = True
Lar1 = FMensaje.LMen1.Width
Lar2 = FMensaje.LMen2.Width
LarM = Lar1
If Lar2 > LarM Then LarM = Lar2
FMensaje.Cuadro.Width = LarM * 1.1
FMensaje.Cuadro.Left = FMensaje.Ima(0).Left + FMensaje.Ima(0).Width * 1.4
FMensaje.LMen1.Left = (FMensaje.Cuadro.Width - FMensaje.LMen1.Width) / 2
FMensaje.LMen2.Left = (FMensaje.Cuadro.Width - FMensaje.LMen2.Width) / 2
FMensaje.Width = FMensaje.Cuadro.Width + FMensaje.Ima(0).Width * 2
If BCap2 = "" Then
FMensaje.Bt2.Visible = False
FMensaje.Bt1.Left = (FMensaje.Width - FMensaje.Bt1.Width) / 2
Else
FMensaje.Bt2.Visible = True
FMensaje.Bt1.Left = (FMensaje.Width - FMensaje.Bt1.Width * 2.1) / 2
FMensaje.Bt2.Left = FMensaje.Bt1.Left + FMensaje.Bt1.Width * 1.1
End If
FMensaje.Show 1
End Sub
================================================================
Si se quiere mostrar un mensaje con un solo botón, el argumento del Caption del otro se pone como cadena vacía (""),.
La variable Resp es Public Integer y sirve para saber cual botón cliqueó el usuario y según eso que debe hacer el programa.
Ahora un ejemplo: supongamos que donde se necesitan dos fechas para buscar algo el usuario se equivoca y pone en "hasta" una fecha anterior a "desde":
If Hasta < Desde then
Call MENSAJE("Fechas Incongruentes", "La fecha ingresada en el casillero 'Hasta' es", "anterior a la ingresada en 'Desde'. Verifique", "Corregir", "", 6)
TDesde.SelStart = 0
TDesde.SelLenght = Len(TDesde.Text)
TDesde.SetFocus
End If
el resultado es más o menos así:
-----------------------------------------------------------------------------------------
| Fechas incongruentes |
-----------------------------------------------------------------------------------------
| La fecha ingresada en el casillero 'Hasta' es |
| anterior a la ingresada en 'Desde'. Verifique |
| -------------------- |
| | Corregir | |
| -------------------- |
-----------------------------------------------------------------------------------------
... y en el espacio de la izquierda se muestra la imagen Nº 6, que creo que era un rayo.
=======================================================
Bueno, ahí lo tienen, vamos qué aportan ahora o en el futuro cada uno de los reclamosos. De una cosa estoy muy seguro: no lograrán que vuelva a hacer todo esto, cuando es mucho más fácil adjuntar en un mail. No meto spywares, ni virus, ni soy drogadicto, ni me gustan los jovenzuelos. Mi casilla de mail no tiene pulgas ni vinchucas, ni tampoco muerde.
Chau.