在OnClose里不写Action :=caFree就行了

解决方案 »

  1.   

    问一问VCL吧,那东西是画上去的,要变成灰色好像不好办。
    除非自己画一个跟那东东一样的放上去,自己处理,想偷懒是不可能的。
      

  2.   

    form.style或是什么属性有设置的吧
      

  3.   

    没人知道吗?delphi板一天比一天衰
      

  4.   

    你可设置一个外部变量
    var
      bClosePermit: Boolean;可在你需要关闭窗口时,设置: bClosePermit := True;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if bClosePermit then
        Action := caFree
      else
        Action := caNone;
    end;
      

  5.   

    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;
    //别忘了拦截消息防止窗体关闭