你可设置一个外部变量 var bClosePermit: Boolean;可在你需要关闭窗口时,设置: bClosePermit := True;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if bClosePermit then Action := caFree else Action := caNone; end;
procedure TMainForm.FormPaint(Sender: TObject); var Border3D_Y, Border_Thickness, Btn_Width, Button_Width, Button_Height : Integer; MyCanvas : TCanvas; begin MyCanvas := TCanvas.Create; MyCanvas.Handle := GetWindowDC(MainForm.Handle); Border3D_Y := GetSystemMetrics(SM_CYEDGE); Border_Thickness:= GetSystemMetrics(SM_CYSIZEFRAME); Button_Width := GetSystemMetrics(SM_CXSIZE); Button_Height := GetSystemMetrics(SM_CYSIZE); Btn_Width := Border3D_Y + Border_Thickness + Button_Height - (2 * Border3D_Y) - 0; Rec.Left := MainForm.Width - (3 * Button_Width + Btn_Width);//做点文章 Rec.Right := MainForm.Width - (3 * Button_Width + 03);//做点文章 Rec.Top := Border3D_Y + Border_Thickness - 0; Rec.Bottom := Rec.Top + Button_Height - (2 * Border3D_Y); FillRect(MyCanvas.Handle,Rec,HBRUSH(COLOR_BTNFACE+1)); If not Pressed or Focuslost Then DrawEdge(MyCanvas.Handle, Rec, EDGE_RAISED, BF_SOFT or BF_RECT) Else If Pressed and Not Focuslost Then DrawEdge(MyCanvas.Handle, Rec, EDGE_SUNKEN, BF_SOFT or BF_RECT); DrawIconEX(MyCanvas.Handle, Rec.Left+4, Rec.Top+3, Application.Icon.Handle , 8, 8, 0,0,DI_NORMAL); MyCanvas.Free; end; //别忘了拦截消息防止窗体关闭
除非自己画一个跟那东东一样的放上去,自己处理,想偷懒是不可能的。
!
var
bClosePermit: Boolean;可在你需要关闭窗口时,设置: bClosePermit := True;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if bClosePermit then
Action := caFree
else
Action := caNone;
end;
var
Border3D_Y,
Border_Thickness,
Btn_Width,
Button_Width,
Button_Height : Integer;
MyCanvas : TCanvas;
begin
MyCanvas := TCanvas.Create;
MyCanvas.Handle := GetWindowDC(MainForm.Handle);
Border3D_Y := GetSystemMetrics(SM_CYEDGE);
Border_Thickness:= GetSystemMetrics(SM_CYSIZEFRAME);
Button_Width := GetSystemMetrics(SM_CXSIZE);
Button_Height := GetSystemMetrics(SM_CYSIZE);
Btn_Width := Border3D_Y + Border_Thickness + Button_Height - (2 * Border3D_Y) - 0;
Rec.Left := MainForm.Width - (3 * Button_Width + Btn_Width);//做点文章
Rec.Right := MainForm.Width - (3 * Button_Width + 03);//做点文章
Rec.Top := Border3D_Y + Border_Thickness - 0;
Rec.Bottom := Rec.Top + Button_Height - (2 * Border3D_Y);
FillRect(MyCanvas.Handle,Rec,HBRUSH(COLOR_BTNFACE+1));
If not Pressed or Focuslost Then
DrawEdge(MyCanvas.Handle, Rec, EDGE_RAISED, BF_SOFT or BF_RECT)
Else If Pressed and Not Focuslost Then
DrawEdge(MyCanvas.Handle, Rec, EDGE_SUNKEN, BF_SOFT or BF_RECT);
DrawIconEX(MyCanvas.Handle, Rec.Left+4, Rec.Top+3, Application.Icon.Handle , 8, 8, 0,0,DI_NORMAL);
MyCanvas.Free;
end;
//别忘了拦截消息防止窗体关闭