Paredes en los formularios

Tengo que hacer en un frm que al pinchar con el botón derecho me salga un comando de queesesto, y el problema es que al pinchar cerca del borde del formulario parte del botón queesesto que le doy las coordenadas del ratón se me oculta detrás del borde y queda muy mal ¿Cómo puedo hacer para que al pinchar cerca del borde, el botón se mueva automáticamente para que se visualice entero? Es decir, como si los bordes hicieran de paredes impidiendo al botón que quede mal visualizado

1 Respuesta

Respuesta
1
Intenta con esto..
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
cmdQueesesto.Left = X
cmdQueesesto.Top = Y
if cmdQueesesto.Left + cmdQueesesto.Width > me.Width Then
cmdQueesesto.Left = me.Width - cmdQueesesto.Width
End If
if cmdQueesesto.Top + cmdQueesesto.Height > me.Height Then
cmdQueesesto.Top = me.Height - cmdQueesesto.Height
End If
cmdQueesesto.Visible = True
End If
End Sub
Pero te sigo Recomendando el Menu...
Estuve probando el código que te puse y tuve algunos problemas entonces lo cambie te funciona mejor el siguiente.
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
cmdQueesesto.Left = X
cmdQueesesto.Top = Y
If cmdQueesesto.Left + cmdQueesesto.Width > Me.ScaleWidth Then
cmdQueesesto.Left = Me.ScaleWidth - cmdQueesesto.Width
End If
If cmdQueesesto.Top + cmdQueesesto.Height > Me.ScaleHeight Then
cmdQueesesto.Top = Me.ScaleHeight - cmdQueesesto.Height
End If
cmdQueesesto.Visible = True
End If
End Sub
Lo único que le cambie fue el me. Height y me. Width por me. Scaleheight y me. Scalewidth
Suerte!
Eso el lo que hago, y es un botón de comando, lo malo es que al darle las coordenadas al menú con por e y que son las coordenadas del ratón, si se pincha cerca de un borde, al darle al botón de comando hago esto.
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
cmdQueesesto.Left = X
cmdQueesesto.Top = Y
cmdQueesesto.Visible = True
End If
End Sub
Pero al darle esas coordenadas, si el ratón está muy cerca del borde izquierdo, el botón de comando se visualiza una parte, aparece como cortado, ya que se termina el formulario, y no se visualiza entero, y lo que quiero es que haya algo que automáticamente me lo ponga para que se visualice entero o que lo tenga que hacer a mano comprobando cada vez que se visualice el botón de comando su posición
No se si estas utilizando un botón de comando o un menu.
Si no estas utilizando un menu de lo recomiendo este lo puedes crear con el diseñador de menús de visual Basic Creas un Menu de Nombre mnuQue con cualquier caption y con propiedad visible =False y que contenga un Submenú con el nombre que quieras y el Caption de Que es esto... y Utilizas el Código de Abajo ...
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuQue, , X, Y
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas