Visual Basic para Aplicaciones - Problema con UserForm

Life is soft - evento anual de software empresarial
 
Vista:

Problema con UserForm

Publicado por Jose Eli (3 intervenciones) el 25/05/2007 18:39:27
Buenas a todos. Tengo dos problemas con las ventanas userform, esta ventan da a elegir a un usuario y tiene que teclear la contraseña dependiento el usuario, mis problemas son los siguientes:
- Como puedo hacer para que el cuadrito de la esquina superior derecha, la "X", no aparesca.
-Si teclean mal la contraseña como hacer para que siga la ventana mostrandose y n vuelvan a teclear la contraseña.
El codigo que estoy utilizando es el siguiente:
Private Sub UserForm_Initialize()
ComboBox1.AddItem "INVITADO" 'ListIndex = 0
ComboBox1.AddItem "COORDINADOR" 'ListIndex = 1
ComboBox1.AddItem "ADMINISTRADOR" 'ListIndex = 2

'Use drop-down list
ComboBox1.Style = fmStyleDropDownList
'Combo box values are ListIndex values
ComboBox1.BoundColumn = 0
'Set combo box to first entry
ComboBox1.ListIndex = 0
End Sub

Private Sub CommandButton1_Click()
Select Case ComboBox1.Value
Case 0
Per = 1
MsgBox "Esta ingresando como invitado y no podrá realizar ningun cambio"
Case 1
If TextBox1 = "pass1" Then
Per = 1
Else
MsgBox "Contraseña incorrecta"
End If
Case 2
If TextBox1 = "pass2" Then
Per = 2
Else
MsgBox "Contraseña incorrecta"
End If
End Select

If Band <> "no" Then
<<<<<Aqui es donde tendria que poner las instrucciones
<<<<<para que se borre la contraseña incorrecta y se quede
<<<<<esperando una nueva contraseña
Else
MsgBox "Permisos"
'Call Permisos(Per)
End If

End Sub

Private Sub Salir_Click()
ActiveWorkbook.Close (True)
End Sub

Private Sub UserForm_Terminate()
ActiveWorkbook.Close (True)
End Sub
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 UserForm

Publicado por cmgcharli (51 intervenciones) el 26/05/2007 00:24:40
El cuadradito [X] me parece segun mis conocimiento que no se puede eliminar no obstante lo que puedes hacer es que no pueda cerrar el formulario cuando lo elimine.
Mira el evento correspondiente creo que es QueryClore o QueryUnload. Ejemplo:

Private......QueryClose(Cancel As Interger, CloseMode As Interger)
if CloseMode=0 then
Cancel =true
End if

Creo que es asi como se anula la acción del boton para no cerrar el formulario puede que sea CloseMode=1
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 UserForm

Publicado por JuanC (243 intervenciones) el 29/05/2007 13:34:25
Para deshabilitar el "cuadradito" [X] está la API de Windows

Private Declare Function apiGetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function apiSetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function apiDrawMenuBar Lib "user32" Alias "DrawMenuBar" (ByVal hWnd As Long) As Long
Private Declare Function apiFindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function apiGetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function apiModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long

Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const SC_CLOSE = &HF060&

Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE As Long = (-16)

Private Const WS_EX_APPWINDOW = &H40000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_POPUP As Long = &H80000000

Public Sub NoCerrar(frm As Object)
Dim hWnd&, hMenu&
Dim lStyle&
On Error Resume Next
hWnd = apiFindWindow(vbNullString, frm.Caption)
If hWnd = vbNull Then Exit Sub

hMenu = apiGetSystemMenu(hWnd, 0)
apiModifyMenu hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED, -10, "Close"

lStyle = apiGetWindowLong(hWnd, GWL_STYLE)

lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_POPUP

apiSetWindowLong hWnd, GWL_STYLE, (lStyle)

lStyle = apiGetWindowLong(hWnd, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_APPWINDOW

apiSetWindowLong hWnd, GWL_EXSTYLE, lStyle
apiDrawMenuBar hWnd
End Sub

Saludos desde Baires, JuanC
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