Usando Delphi Me gustaría agregar otro botón a los botones de icono de borde; cerrar, maximizar, minimizar. ¿Alguna idea sobre cómo hacer esto?Agregue un icono de borde al formulario
Respuesta
Esto fue fácil de hacer antes de Windows Aero. Simplemente tenía que escuchar los mensajes WM_NCPAINT
y WM_NCACTIVATE
para dibujar en la parte superior de la barra de título, y de manera similar se puede utilizar los otros WM_NC*
mensajes para responder a los clics del ratón, etc, en particular, WM_NCHITTEST
, WM_NCLBUTTONDOWN
y WM_NCLBUTTONUP
.
Por ejemplo, para dibujar una cadena en la barra de título, sólo había que hacer
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
protected
procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
procedure WMNCActivate(var Msg: TWMNCActivate); message WM_NCACTIVATE;
private
procedure DrawOnCaption;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
begin
inherited;
DrawOnCaption;
end;
procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
inherited;
DrawOnCaption;
end;
procedure TForm1.DrawOnCaption;
var
dc: HDC;
begin
dc := GetWindowDC(Handle);
try
TextOut(dc, 20, 2, 'test', 4);
finally
ReleaseDC(Handle, dc);
end;
end;
end.
Ahora bien, esto no funciona con Aero activado. Aún así, hay una manera de dibujar en la barra de subtítulos; Lo he hecho, pero es mucho más complicado. Ver this article para un ejemplo de trabajo.
Sí, establezca la propiedad de estilo de borde del formulario en bsNone e implemente su propia barra de título con todos los botones y el comportamiento personalizado que desee.
Chris Rolliston escribió un blog detallado sobre creating a custom title bar on Vista and Windows 7.
También escribió un follow up article y publicó un código de ejemplo en CodeCentral.
- 1. Agregue un método de ayuda de formulario
- 2. Symfony2 agregue el campo ReCaptcha al formulario de registro
- 3. Agregue borde y sombra a los botones
- 4. Cambiar un color de borde en un formulario de Windows
- 5. Externamente agregue errores de formulario en Django
- 6. Agregue un retraso al Diálogo de progreso
- 7. Agregar un NSProgressIndicator al icono de base
- 8. Agregue un onBlur a todos los elementos de formulario
- 9. Mover formulario sin estilo de borde
- 10. ¿Cómo deshacerse del borde exterior azul al hacer clic en un campo de entrada de formulario?
- 11. Wtforms, agregue una clase a un formulario dinámicamente
- 12. Agregue un campo personalizado al curso Moodle
- 13. Ocultar borde en HTML Formulario o Entrada
- 14. Agregue opciones adicionales al widget de selección de formulario de Django
- 15. Agregue el elemento de formulario dinámicamente usando javascript - no enviando
- 16. Tengo un archivo .PNG. ¿Desea que el icono embebido se muestre como icono en la barra de título del formulario?
- 17. Agregar borde al control WebBrowser
- 18. Agregue más de un directorio de recursos al embarcadero
- 19. Formulario de Symfony2: seleccione una entidad o agregue una nueva
- 20. WPF Agregar un borde a un TextBlock
- 21. Powershell -Command al borde múltiple
- 22. ¿Cómo crear un borde en un borde de una vista?
- 23. Cómo eliminar el borde de ButtonChrome (al definir la plantilla de un borde)?
- 24. Eliminar el icono estándar en el formulario de Windows
- 25. agregue +1 al campo (contador de visitas)
- 26. Agregue una vista al final de Webview
- 27. agregue dinámicamente imágenes al widget de galería
- 28. Agregue marcas personalizadas al menú de Wordpress
- 29. Problema al generar el borde de un rectángulo en Java?
- 30. Cómo mover y cambiar el tamaño de un formulario sin un borde?