2009-11-19 8 views
5

Uso Beyond Compare (un gran programa), y quedé muy impresionado cuando mostró una etiqueta de "Nueva Versión Disponible" en su Barra de Menú. Hice clic en él, apareció una nueva caja de instalación de la instalación, se instaló, el programa se reinició solo y apareció la nueva versión y no más etiquetas.¿Cómo agrego un TLabel a la barra de menú en Delphi?

Pensé que era una gran característica. La etiqueta está prominente en la barra de menú donde el usuario no puede perderse. Ya tengo el procedimiento de actualización, así que todo lo que tuve que hacer fue agregar la etiqueta. Eso debería ser fácil.

Aquí está la etiqueta donde yo quiero: The Label Where I Want It http://www.beholdgenealogy.com/img/tlabel.jpg

... incorrecto. No pude entender cómo agregar una etiqueta allí. La barra de menú y el área de control de arriba parecen ser área de no intervención para los componentes visuales. No pude colocar uno allí.

Pero sé que se puede hacer porque Beyond Compare es un programa Delphi.

¿Alguien me puede decir lo que tengo que hacer para poner un TLabel en mi barra de menú o al menos hacer que parezca que está sobre la barra de menú en la posición correcta?

Como referencia, utilizo Delphi 2009.


Conclusión: Christopher parece haber descubierto correctamente lo que la gente que no tiene comparación lo hizo. Decidí implementar el elemento del menú, pero sin la personalización de su solución de "dibujo del propietario". Por lo tanto, no aparece el hipervínculo subrayado azul negrita, pero tampoco pierdo todas las cosas automáticas (como el estilo de Vista) que el propietario saca.

Para espaciar el elemento de menú a la derecha, he agregado un elemento después de la "Ayuda" que tiene el título "" y está deshabilitado.

Gracias, Christopher. Estaba atrapado pensando que debe ser una etiqueta, pero lo viste a tu alrededor.

+1

¿Estás seguro de que Beyond Compare usa el menú nativo (TMainMenu)? Tal vez es un menú de terceros (Toolbar2000, DevEx, ...). –

+0

Ulrich: No sé qué usa Beyond Compare. Solo sé que fue desarrollado con Delphi. – lkessler

+1

Si está hecho con delphi, es muy fácil encontrar qué componente se usa inspeccionando los recursos. – Vegar

Respuesta

13

¿Estás seguro de que es una etiqueta?

No he usado el programa, pero podría ser simplemente un elemento de menú, establecer como 'propietario dibujar' y pintado para que parezca un enlace?

http://sirmonkeys.com/images/updatelink.png
(hecho en Delphi 7)

procedure TForm1.MYITem1DrawItem(Sender: TObject; ACanvas: TCanvas; 
    ARect: TRect; Selected: Boolean); 
begin 
    acanvas.Font.Style := [fsUnderline,fsbold]; 
    acanvas.Font.color := clblue; 
    acanvas.Brush.Style := bsClear; 
    acanvas.TextOut(arect.left+1,arect.top+1,'Link to Update...'); 
end; 

procedure TForm1.MYITem1MeasureItem(Sender: TObject; ACanvas: TCanvas; 
    var Width, Height: Integer); 
begin 
    width := 100; 
end; 

y luego o bien un tener un ImageList asignado a MainMenu1.Images o conjunto MainMenu1.OwnerDraw a true.

+0

Eso podría ser posible. Voy a intentar eso. – lkessler

+0

Ahora estoy seguro de que tienes razón. Gracias. P.S., mis aceleradores (los subrayados debajo de las letras) desaparecieron. Pero tu ejemplo los tiene. ¿Cómo puedo recuperarlos? Ya obtuve el & como parte de su pie de foto. – lkessler

+1

Los aceleradores aparecen automáticamente cuando actúas como si fueras a utilizar el teclado para activar el menú, lo que significa presionar la tecla Alt. Christopher probablemente presionó Alt + PrntScr para hacer la imagen, por lo que aparecieron los indicadores del acelerador. Este ha sido el comportamiento predeterminado de Windows durante aproximadamente 10 años. Si desea que estén visibles todo el tiempo, ajuste la configuración de pantalla en el panel de control del sistema operativo. –

2

La implementación de Beyond Compare es en realidad una TLabel. Utilizamos Toolbar 2000 para nuestros menús y barras de herramientas, por lo que se admite la incrustación directa de un control en el menú (con un fondo correcto), y tiene la ventaja de que admite elementos de menú justificados a la derecha.

+0

Gracias, Craig. Entonces, en realidad es una etiqueta. Técnicamente tiene la respuesta correcta (utilizando la Barra de herramientas 2000), pero ya lo he implementado como un elemento de menú sin color, por lo que dejaré la respuesta aceptada con Christopher. No sabía que estabas aquí en StackOverflow. Ame su Beyond Compare. Lo uso para comparar mis versiones, actualizar mi sitio web y hacer mis copias de seguridad. – lkessler

Cuestiones relacionadas