如何改变窗体caption的颜色

解决方案 »

  1.   

    不能改变,Caption颜色是系统颜色
    如果要修改,那么你就自己处理标题栏的重画咯
    或者去掉window的WS_CAPTION风格,自己画一个标题栏
      

  2.   

    对啊,重画标题栏,或者把form的sytle设为none然后加上toolbar这时toolbar就被视为标题栏了,你在toolbar上加label什么等就可以有不同颜色字体
      

  3.   

    这么简单的问题,在论坛里面搜一下就有好多
    http://www.kan68.com/index3.htm?user=zhttz
      

  4.   

    在MouseDown事件中写
    begin
     if button=mbLeft then
      begin
       releaseCapture;
       perform(wm_syscommand,$F012,0);
      end;
    end;
    把form的sytle设为none,然后放有mousedown的控件就可以了!
      

  5.   

    form没有Style这个属性啊
    只有BorderStyle
    设为bsnone后,标题栏是没了,但加了toolbar后,toolbar不会被视为标题栏啊怎么做啊?????
      

  6.   

    procedure WMNCPaint(var Msg: TMessage); message WM_NCPAINT;
        procedure WMNCActivate(var Msg: TWMNCActivate); message WM_NCACTIVATE;
    procedure TForm1.WMNCPaint(var Msg: TMessage);
    var
      dc: HDC;
      cr: TRect;
      wc: TCanvas;
    begin
      DefWindowProc(Handle, Msg.Msg, Msg.WParam, Msg.LParam);
      dc := GetWindowDC(Handle);
      try    wc := TCanvas.Create;
        wc.Handle := dc;
        // 计算标题栏尺寸
        cr.Left := GetSystemMetrics(SM_CXFRAME);
        cr.Top := GetSystemMetrics(SM_CYFRAME);
        cr.Right := Width - 4 * GetSystemMetrics(SM_CXSIZE);
        cr.Bottom := cr.Top + GetSystemMetrics(SM_CYCAPTION) - 1;
        // 获取标题栏的 Rect 后就可以直接在 wc 画布上画了,直接在标题栏上出效果!
        // 绘画代码省略
        // ... ...
        wc.Brush.Color :=clBlack;
        wc.FillRect(cr);
        wc.Brush.Style  :=bsClear;
        wc.Font.Color :=clWhite;
        wc.TextOut(0,0,caption);
      finally    ReleaseDC(Handle, dc);  end;
    end;procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
    var
      pm: TMessage;
    begin
      Msg.Result := 0;
      if Msg.Active then
      begin
        pm.Msg := Msg.Msg;
        pm.WParam := 0;
        WMNCPaint(pm);
      end
      else
      begin
        DefWindowProc(Handle, Msg.Msg, 1, 0);
      end;
    end;