5,392
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.DrawCaption;
var
ACanvas: TCanvas;
begin
ACanvas := TCanvas.Create;
try
ACanvas.Handle := GetWindowDC(Form1.Handle);
with ACanvas do
begin
Brush.Color := clActiveCaption;
Font.Name := 'Arial';
Font.Size := 10;
Font.Color := clCaptionText;
Font.Style := [fsBold];
TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
' SwissDelphiCenter');
end;
finally
ReleaseDC(Form1.Handle, ACanvas.Handle);
ACanvas.Free;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
DrawCaption ;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
DrawCaption;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
DrawCaption ;
end;
procedure TForm1.WMMove(var Msg: TWMMove);
begin
inherited;
DrawCaption ;
end;
procedure TForm1.WMSetText(var Msg: TWMSetText);
begin
inherited;
DrawCaption ;
end;
procedure WMNCPaint(var Message:TWMNCPaint);message WM_NCPAINT;
procedure WMNCActivate(var Message:TWMNCActivate);message WM_NCACTIVATE;
在不带皮肤的DELPHI程序里面,可以实现,但是放到DEV皮肤里面,发现没用,我该怎么改呢
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure DrawCaption;
procedure WMNCPaint(var Message:TWMNCPaint);message WM_NCPAINT;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DrawCaption;
var
ACanvas: TCanvas;
begin
ACanvas := TCanvas.Create;
try
ACanvas.Handle := GetWindowDC(Self.Handle);
with ACanvas do
begin
Brush.Color := clActiveCaption;
Font.Name := 'Arial';
Font.Size := 10;
Font.Color := clCaptionText;
Font.Style := [fsBold];
TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
' SwissDelphiCenter');
end;
finally
ReleaseDC(Self.Handle, ACanvas.Handle);
ACanvas.Free;
end;
end;
procedure TForm1.WMNCPaint(var Message: TWMNCPaint);
begin
inherited ;
DrawCaption;
end;
一弹出别的窗体,还是会把form的caption弄的消失掉