CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Menu Lateral

(1/1)

Vortice:
Como están foreros, espero q bien, tengo una duda como puedo hacer un menú lateral así como el “explorador de soluciones” q se esconda y se pueda clavar.
Ojala me haya explicado bien.
Desde ya gracias

Nebire:
Utiliza un panel mete los botones que desees. ten en cuenta sus dimensiones así como su posición.

Luego suponiendo que el contenedor del panel contenedor del menú, es el formulario sólo tienes que escribir el código correspondiente al evento 'mouso.move', examina si está situado 'x' píxeles al lado del formulario (que quieres que sea sensible) y controlando la altura, cuando dé positivo utiliza un bucle con retardo para emerger el panel, la velocidad de aparición y el modo es cosa tuya, puedes hacerlo instantáneo con un 'panel.left=x' o con un bucle pausadamente moviendo 'x' písels en cada ciclo, esto requeríría un retardo para que exista la sensación de deslizamiento.

El código del área sensible sería más o menos algo como:

--- Código: Text --- ' esta función sería invocada desde mouse move del contenedor del panel  que aloja el menú:' posRaton es una estructura de tipo point, que tiene un valor x y otro Y de la posición del ratón, cazado en el evento mousemove.' Limites es tambien una estructura point, si el menú se oculta en la derecha limite.X define el píxel más a la izquierda tal que siendo pisado consideremos qeu es sensible,  límite.Y define el punto vertical de posición del panel, y margenVertical la altura del panel, por tanto sumado a su 'top' indica el píxel más bajo con área de influencia para activar el panel del menú. public function validar_AreaSensible(posRaton as point(), limites as point() as integer, margenVertical as byte) as boolean     if  (posraton.X <= limite.X) and (posRaton.Y >= limite.Y or posRaton.Y <= (limite.Y + margenVertical)) then return trueend function    
Si la función devuelve true, significa que se debería 'sacar' el menú....
El menú podría recogerse al perder el foco el panel, salvo que se fijara una 'chincheta'.... la chincheta es un simple checkbox, que usa una imagen a propósito que cambia según sea su valor, para reflejar el estado.

Si el panel tuviera pongamos 100 píxeles de ancho haríamos algo como:


--- Código: Text ---  public sub mover_MenuLateral(sentido as boolean)     if sentido=true  then ' lo sacamos         dirección=1         ini=-100         fin=0     else          ' si lo metemos         direccion=-1: ini=0 : fin=-100     end if         for k as integer= ini to fin step (direccion * -1)          panel1.left += direccion          do               System.Windows.Forms.DoEvents          loop while Timer1.enabled=true          Timer1.enabled=true     nextend sub public sub Timer1_Tick.......     timer1.enabled=falseend sub   

Navegación

[0] Índice de Mensajes

Ir a la versión completa