Usted puede tener una ventana que no parece tener una barra de título, o un título estándar, simplemente asumiendo el control de la pintura de toda la ventana:
Cree una nueva aplicación vacía. Utilice este código para el formulario:
unit ncUnit1;
interface
// XE2 uses clause
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
// If you're not using XE2 take out the prefixes (WinApi, Vcl, System, etc)
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
protected
procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
procedure SolidColorNcPaint(solidColor,frameColor:TColor);
procedure Resizing(State: TWindowState); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WMNCPaint(var Message: TWMNCPaint);
begin
SolidColorNcPaint(clBtnFace,clBtnFace);
end;
procedure TForm1.Resizing(State: TWindowState);
begin
inherited;
PostMessage(Self.Handle,WM_NCPAINT,0,0); {force initial paint}
end;
procedure TForm1.SolidColorNcPaint(solidColor,frameColor:TColor);
var
aBorder:Integer;
ahdc : HDC;
begin
aBorder := GetSystemMetrics(SM_CYSIZEFRAME);
canvas.Lock;
ahdc := GetWindowDC(Handle);
canvas.Handle := ahdc;
ExcludeClipRect(canvas.Handle, aBorder, 0, Width-aBorder, Height - aBorder) ;
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := frameColor;
Canvas.Pen.Color := solidColor;
Canvas.Rectangle(0,0, Width,Height);
ReleaseDC(Self.Handle, ahdc);
canvas.Handle := 0;
canvas.Unlock;
end;
end.
Lo que ves arriba es sólo el código suficiente para volver a dibujar un color sólido sobre el área no cliente de la ventana, no para eliminarlo por completo. Dependiendo del estilo de la ventana personalizada que desee, debe procesar lo que desee en el formulario. Si no desea un botón Cerrar, quite el botón Cerrar y, si no desea el comportamiento de cambio de tamaño, elimine el comportamiento de cambio de tamaño. Si configura el FormStyle=fsDialog
más el código anterior, obtendrá una ventana que tiene un área de título dibujado a medida completa (que puede poner lo que desee). Si realmente no desea que el área del título exista, puede modificar el código anterior para lograr eso también.
Posible duplicado: http://stackoverflow.com/questions/4901965/can-you- make-a-borderless-application-main-window-in-windows-without-ws-popup-s –
La razón de que lo anterior sea un duplicado se debe a que lo que está sucediendo dentro del componente TForm es que cuando configuras 'BorderStyle = bsNone', también obtienes (¡gratis!) el estilo WS_POPUP configurado. El duplicado vinculado en realidad muestra una forma realmente baja de lograr que su ventana sea reconocida como una ventana de nivel superior, a pesar de que no tiene bordes (sin bordes). Cita: "En resumen, las formas sin bordes que usan BorderStyle = bsNone (dwStyle = WS_POPUP) bloquean todas las funcionalidades de Windows que generalmente se aplican a las ventanas principales de las aplicaciones, y todas las soluciones a continuación resuelven una parte de ellas". –