domingo, 31 de octubre de 2010

Comprando hardware

martes, 26 de octubre de 2010

Bloquear una pantalla con css(Tipo Modal)

Algunas veces es necesario hacer un bloqueo de una pantalla en forma modal, este código lo he probado en Firefox 3 e Internet Explorer 6,7,8 y va dentro de las etiquetas style o si lo prefieren en una hoja de estilo externa.
   #Bloquear{
      background:#000000;
      width: 100%;
      height: 100%;
      filter:alpha(opacity=50);
      opacity:0.5;
       margin: 0px;
      position: absolute;
      left: 0px;
      top: 0px;
      right: 0px;
      z-index:1000;
      cursor: wait;  
      margin: 0px;
      padding: 0px;
      /* display: none;*/
    }


Tomando en cuenta que debería de existir un div así <div id="Bloquear"></div>

Algunas veces el bloqueo de la pantalla no lo hace completamente en Internet explorer 8 por lo que habría que agregarle las siguiente línea a la hoja de estilo en cascada.

html
{
    padding: 0;
    margin: 0;
    height: 100%;
    width: 100%;
}

Todos los internet explorer IETESTER

Algunas veces es necesario probar alguna página en diferentes versiones de Internet Explorer por lo menos 6,7,8, afortunadamente existe una herramienta que nos permite hacer esto IETESTER.

lunes, 25 de octubre de 2010

viernes, 22 de octubre de 2010

Tipos de Jefes

Encuentre a su jefe:

El “toma rehenes”: le atrapa en su cubículo y habla hasta que se le caen las orejas
El “fraudulento”: recurre a vigorosos gestos de asentimiento para simular comprensión.
El “embustero motivador”: no tiene idea de lo que usted hace pero le dice que es el mejor o la estrella del equipo verdad MIGUEL RUIZ un saludo.
El “sobre ascendido”: intenta ocultar su incompetencia con una pobre comunicación.
El “comadreja”: se acredita el duro trabajo que hizo usted.
El “moises”: se pasa la vida esperando señales claras de arriba.
El “jefe perfecto”: fallece por causas naturales un jueves por la tarde.
Tomado del Libro: El principio de Dilbert de Scott Adams.

viernes, 15 de octubre de 2010

Extraer texto de una imagen o convertir una imagen a texto

No se si les ha pasado alguna vez que tienen una imagen y esta le quieren extraer el texto, por ejemplo una imagen de un documento escandeado del que se requiera extraer el texto para hace un reporte bueno pues generalmente necesitan un programa OCR, afortundamente existe una herramienta en linea que hace esto espero y les sirva http://www.free-ocr.com/

jueves, 14 de octubre de 2010

Talento

Todos los viernes trataré de poner una tira como esta.

Diferencia Paso por Referencia y Paso por valor

Bueno algunas veces me hacen algunos compas esa pregunta, y pues es algo muy sencillo cuando se envía por valor se hace una copia del valor de la variable, al ser una copia esta se le pueden asignar multiples valores que no afectaran el valor de la original. Bueno les dejo una liga del compa guille el explica esto más a detalle, así como conversiones entre vb.net y c# Equivalencias el guille.
Y dejo un ejemplito


 Public Sub pasaparametro(ByRef a, ByVal b)
        a = 1
        b = 333 'Esta variable es una copia pirata
 End Sub  

'Cuando la llamamos
Dim a as integer=0
Dim b as integer=0

pasaparametro(a,b)
'Ahora a tiene 1
'Y b sigue con su 0

Y que tiene esto de maravilloso, pues que los parametros por referencia en vb.net nos sirven como parametros de salida, es decir que de una función o procedimiento puedo retornar muchos parametros de salida,rompiendo la limitante de retornar solo un parametro.

martes, 12 de octubre de 2010

Tomando nota en las Juntas

La ardua tarea de tomar nota, afortunadamente nunca he visto un caso así.

Punto de contacto

Una cosa va encadenada a otra cosa :s

Críticando a la empresa

No se si les ha pasado que a veces alguien tiene una idea, y nadie lo pela en la empresa, y algunas veces le dan ganas de contarselo alguien o bien escribirlo, con esto no quiere decir que este criticando donde trabajo, bueno pues una imagen habla por sí sola.

Nueva Categoría en el blog Diversión

Bueno no se que animalillo me ha picado he leido algunos libros estos ultimos meses, y pues buscando que leer en la red me encontre con una serie de comics que me ha hecho morir de risa y reflexionar un poco, y pues me hice la pregunta ¿porque no pongo una categoría de entretenimiento?, y pues bueno, creo que a veces jugando támbien se aprende.

lunes, 11 de octubre de 2010

Problema Release / Debug modo no estan disponibles vs2005

Hay veces que el modo de compilación no aparece en vs2005, pues bien para que aparezca hay que seguir estos sencillos pasos.
Ir al menu de herramientas->Opciones->Expandir proyectos y soluciones, click en general y seleccionar
Mostrar configuraciones de generacion avanzadas.

Convertir numero a Texto en SQL SERVER

Continuando con el post anterior solo comente algunas líneas, y listo
 --http://lafabricadesoftware.blogspot.com/
CREATE FUNCTION [dbo].[fn_numeroa_Texo](@Numero NUMERIC(20,2))
RETURNS VARCHAR(700)
BEGIN
 DECLARE @letras VARCHAR(700)
  DECLARE @lnEntero INT,
    @lcRetorno VARCHAR(512),
    @lnTerna INT,
    @lcMiles VARCHAR(512),
    @lcCadena VARCHAR(512),
    @lnUnidades INT,
    @lnDecenas INT,
    @lnCentenas INT,
    @lnFraccion INT
 ---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
  SELECT @lnEntero = CAST(@Numero AS INT),
    @lnFraccion = (@Numero - @lnEntero) * 100,
    @lcRetorno = '',
    @lnTerna = 1

  WHILE @lnEntero > 0
  BEGIN /* WHILE */

    -- Recorro columna por columna
    SELECT @lcCadena = ''
    SELECT @lnUnidades = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
    SELECT @lnDecenas = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
    SELECT @lnCentenas = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)

    -- Analizo las unidades
    SELECT @lcCadena =
    CASE /* UNIDADES */
      WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
      WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
      WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
      WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
      WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
      WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
      WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
      WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
      WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
      WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
      ELSE @lcCadena
    END /* UNIDADES */

    -- Analizo las decenas
    SELECT @lcCadena =
    CASE /* DECENAS */
      WHEN @lnDecenas = 1 THEN
        CASE @lnUnidades
          WHEN 0 THEN 'DIEZ '
          WHEN 1 THEN 'ONCE '
          WHEN 2 THEN 'DOCE '
          WHEN 3 THEN 'TRECE '
          WHEN 4 THEN 'CATORCE '
          WHEN 5 THEN 'QUINCE '
          ELSE 'DIECI' + @lcCadena
        END
      WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
      WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
      WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
      WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
      WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
      WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
      WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
      WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
      WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
      WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
      WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
      WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
      WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
      WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
      WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
      WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
      ELSE @lcCadena
    END /* DECENAS */

    -- Analizo las centenas
    SELECT @lcCadena =
    CASE /* CENTENAS */
      WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
      WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
      WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
      WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
      WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
      ELSE @lcCadena
    END /* CENTENAS */

    -- Analizo los millares
    SELECT @lcCadena =
    CASE /* TERNA */
      WHEN @lnTerna = 1 THEN @lcCadena
      WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
      WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
        @lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
      WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
        NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
      WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
      ELSE ''
    END /* MILLARES */

    -- Armo el retorno columna a columna
    SELECT @lcRetorno = @lcCadena + @lcRetorno
    SELECT @lnTerna = @lnTerna + 1

  END /* WHILE */

  IF @lnTerna = 1
    SELECT @lcRetorno = 'CERO'

  SELECT @letras=RTRIM(@lcRetorno)
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
--                                               ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
 RETURN @letras
END
Ejemplo de uso:
 SELECT dbo.fn_numeroa_Texo(778)
 

Convertir dinero o moneda a Texto en SQLSERVER

Alguna vez necesite utilizar un sp que me convertiera una cantidad expresada en dinero a texto, pues encontre una store procedure que hacía esto no recuerdo de que página copie el código, pero bueno lo converti en una función escalar esperando que sea de ayuda
--http://lafabricadesoftware.blogspot.com/
CREATE FUNCTION [dbo].[fn_Dinero_a_Texo](@Numero NUMERIC(20,2))
RETURNS VARCHAR(700)
BEGIN
 DECLARE @letras VARCHAR(700)
  DECLARE @lnEntero INT,
    @lcRetorno VARCHAR(512),
    @lnTerna INT,
    @lcMiles VARCHAR(512),
    @lcCadena VARCHAR(512),
    @lnUnidades INT,
    @lnDecenas INT,
    @lnCentenas INT,
    @lnFraccion INT
 ---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
  SELECT @lnEntero = CAST(@Numero AS INT),
    @lnFraccion = (@Numero - @lnEntero) * 100,
    @lcRetorno = '',
    @lnTerna = 1

  WHILE @lnEntero > 0
  BEGIN /* WHILE */

    -- Recorro columna por columna
    SELECT @lcCadena = ''
    SELECT @lnUnidades = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
    SELECT @lnDecenas = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
    SELECT @lnCentenas = @lnEntero % 10
    SELECT @lnEntero = CAST(@lnEntero/10 AS INT)

    -- Analizo las unidades
    SELECT @lcCadena =
    CASE /* UNIDADES */
      WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
      WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
      WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
      WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
      WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
      WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
      WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
      WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
      WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
      WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
      ELSE @lcCadena
    END /* UNIDADES */

    -- Analizo las decenas
    SELECT @lcCadena =
    CASE /* DECENAS */
      WHEN @lnDecenas = 1 THEN
        CASE @lnUnidades
          WHEN 0 THEN 'DIEZ '
          WHEN 1 THEN 'ONCE '
          WHEN 2 THEN 'DOCE '
          WHEN 3 THEN 'TRECE '
          WHEN 4 THEN 'CATORCE '
          WHEN 5 THEN 'QUINCE '
          ELSE 'DIECI' + @lcCadena
        END
      WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
      WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
      WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
      WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
      WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
      WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
      WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
      WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
      WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
      WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
      WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
      WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
      WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
      WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
      WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
      WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
      ELSE @lcCadena
    END /* DECENAS */

    -- Analizo las centenas
    SELECT @lcCadena =
    CASE /* CENTENAS */
      WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
      WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
      WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
      WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
      WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
      WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
      ELSE @lcCadena
    END /* CENTENAS */

    -- Analizo los millares
    SELECT @lcCadena =
    CASE /* TERNA */
      WHEN @lnTerna = 1 THEN @lcCadena
      WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
      WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
        @lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
      WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
        NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
      WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
      ELSE ''
    END /* MILLARES */

    -- Armo el retorno columna a columna
    SELECT @lcRetorno = @lcCadena + @lcRetorno
    SELECT @lnTerna = @lnTerna + 1

  END /* WHILE */

  IF @lnTerna = 1
    SELECT @lcRetorno = 'CERO'

  SELECT @letras=RTRIM(@lcRetorno) + ' PESOS (' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
                                               ELSE LTRIM(STR(@lnFraccion,2)) END + '/100) M.N.'
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
--                                               ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
 RETURN @letras
END
Ejemplo de uso
SELECT dbo.fn_Dinero_a_Texo(55250.55)

jueves, 7 de octubre de 2010

Resetear o reiniciar una columna identity(autoincrementable) en SQL SERVER

Cuando se llega a eliminar todos los datos de una tabla y la columna es identity autoincrementable esta se queda con el ultimo valor del ultimo renglon insertado como se pude ver a continuación

DBCC CHECKIDENT (nombre_tabla, NORESEED)

pues para reinicializarla se podría aplicar el siguiente comando

DBCC CHECKIDENT (nombre_tabla, RESEED, 0)

esto indica que el siguiente registro a insertar comenzaría en 1 ya que el valor actual es reseteado a 0.

miércoles, 6 de octubre de 2010

Cachar el error de un webservice en asp.net

Muchas veces cuando se trabaja con webservices en asp.net y existe un error estos regresan algo asi System.Web.Services.Protocols.SoapException: Error al Ejecutar la Consulta , No se puede insertar una fila de clave duplicada en el objeto 'dbo.Personas' con índice único.Talvez en un ambiente de desarrollo esto sea bueno cuando se requiere saber de que webservice viene el error sin embargo es tedioso estar leyendo todo el encabezado que se va formando, la razon de que esto pase es que la excepcion del webservice se va construyendo de un mensaje el nombre del webservice y otros datos. La forma correcta de atrapar el error de un webservice es la siguiente.

Imports System.Web.Services.Protocols
 
Try
Catch ex As SoapException
End Try

He creado una funcion que elimina el encabezado del webservice y que arroja solo el error


 Private Function wmensaje(ByVal ex As SoapException) As String
        Dim men As String = ex.Detail.InnerXml
        Dim i = men.LastIndexOf("</ErrorMessage>") - 15 - men.LastIndexOf("<ErrorMessage>")
        If (ex.Detail.InnerXml.IndexOf("<ErrorMessage>") <> -1 Or ex.Detail.InnerXml IsNot Nothing) Then
            men = men.Substring(ex.Detail.InnerXml.IndexOf("<ErrorMessage>") + 14, i)
        Else
            men = ex.Message
        End If
        Return men
    End Function

'El uso en el catch sería

Try
Catch ex As SoapException
 wmensaje(ex)
End Try

sábado, 2 de octubre de 2010

Creando un menu flotante con css, la propiedad fixed y la propiedad z-index

Hace unos días a un compañero le surguió una pequeña duda de como hacer que un grupo de elementos flotará,
en alguna ocasión ya había yo hecho algo así sin embargo mi mala memoria no me ayudaba, ya que cuando
dejas de usar las cosas por mucho tiempo y no me refiero a mi memoria jajaja, pues simplemente se te olvida
aun asi recuerdo que lo había hecho con hojas de estilo en cascada y efectivamente con solo colocar esta
propiedad al estilo de un objeto este simulará que flota position:fixed pero ¿porque? , los bloques en posición fixed no se mueven cuando el documento es desplazado,ahora muy bien ya flota,pero
puede ocurrir que los otros objetos se superpongan, lo que támbien es conocido como capas, bueno pues
para eso sirve la propiedad z-index para definir que objetos pueden ir enfrente de otros objetos, es decir el
orden de los elementos en el eje z, esta propiedad solo funciona cuando se indica el posicionamiento absolute
y fixed para mayor información sobre los tipos de posicionamiento aquí dejo una liga posicionamiento con css y para la propiedad z-index y pues como era de esperar dejo el código de ejemplo.


<head>
<title>http://lafabricadesoftware.blogspot.com</title>
<style>

.flotante 
{position:fixed;
 z-index:100;
  /*Aqui tenemos arriba las dos principales propiedades el z-index
  100 indica que el objeto se va a sobreponer encima de todos los objetos*/ 
 width:100px;
 background:yellow;
 border:1px solid green;
}
.capa
{
 background-color:blue;
 background:pink;
 border:1px solid green;
}
</style>
</head>
<body>
<div class="flotante">
Este es el ejemplo de un menu que flota como ves es mas sencillo de lo que te imaginas
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div class="capa"><h3>Seccion de en medio</h3></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div class="capa"><h3>Ultima seccion de la pagina</h3></div>
</body>