• Lunes 23 de Diciembre de 2024, 04:51

Autor Tema:  Menu Lateral  (Leído 1828 veces)

Vortice

  • Miembro MUY activo
  • ***
  • Mensajes: 135
    • Ver Perfil
Menu Lateral
« en: Lunes 19 de Mayo de 2008, 18:47 »
0
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
Solo el Bueno muere joven...

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Menu Lateral
« Respuesta #1 en: Sábado 24 de Mayo de 2008, 02:28 »
0
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
  1.  
  2. ' esta función sería invocada desde mouse move del contenedor del panel  que aloja el menú:
  3. ' 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.
  4. ' 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ú.
  5.  
  6. public function validar_AreaSensible(posRaton as point(), limites as point() as integer, margenVertical as byte) as boolean
  7.      if  (posraton.X <= limite.X) and (posRaton.Y >= limite.Y or posRaton.Y <= (limite.Y + margenVertical)) then return true
  8. end function  
  9.  
  10.  

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
  1.  
  2.  
  3. public sub mover_MenuLateral(sentido as boolean)
  4.  
  5.     if sentido=true  then ' lo sacamos
  6.          dirección=1
  7.          ini=-100
  8.          fin=0
  9.      else          ' si lo metemos
  10.          direccion=-1: ini=0 : fin=-100
  11.      end if
  12.    
  13.      for k as integer= ini to fin step (direccion * -1)
  14.           panel1.left += direccion
  15.           do
  16.                System.Windows.Forms.DoEvents
  17.           loop while Timer1.enabled=true
  18.           Timer1.enabled=true
  19.      next
  20. end sub
  21.  
  22. public sub Timer1_Tick.......
  23.      timer1.enabled=false
  24. end sub
  25.  
  26.  
  27.  
«Ma non troppo»
----> ModoVacaciones = False<----