我现在想改变DBGRIDEH的边框颜色,将他改为clBlack,我作了下试验:
  Dbgrideh1.borderStyle := bsNone;
  Procedure TForm1.Button1Onclick(Sender: TObject);
  var
    dc: Hdc;
    Rct: TRect;
  begin
    dc := GetWindowDc(Dbgrideh1.Handle);
    Rct := Rect(0,0,Dbgrideh1.Width,Dbgrideh1.Height);
    //
    with Dbgrideh1.Canvas do
    begin
      Handle := dc;
      Pen.Color := clBlack;
      Pen.Width := 1;
      Brush.Style := bsClear;
      Rectangle(Rct);
    end;
  end;
我现在是靠按个按钮来改变的,我的目的是想界面显示时就实现这个功能,可搞不定
还有,一旦我改变COL的宽度全部画的边框就消失了,我知道是引起了控件的重画,可不知怎么去阻止他,试了些阻止重画的API函数,可搞得连COL的宽度都不能改了,希望指点迷津!!

解决方案 »

  1.   

    >我现在是靠按个按钮来改变的,我的目的是想界面显示时就实现这个功能可以采用消息延迟的办法来解决,我想你可以把这些code放在onshow或者oncreate中是会没有作用的吧,所以你可以只是在onshow中post一个自定义消息,然后在消息的出来代码中处理这些代码。至于怎么让它永久有效果就在form的onpaint中
      

  2.   

    解决了,这样就好了:
    procedure TForm1.FormPaint(Sender: TObject);
      var
        Rct: TRect;
      begin
        Rct := Rect(Dbgrideh1.Left-1,Dbgrideh1.Top-1,Dbgrideh1.Left+Dbgrideh1.Width+1,Dbgrideh1.top+Dbgrideh1.Height+1);
        with Form1.Canvas do
        begin
          Pen.Color := clBlack;
          Pen.Width := 1;
          Brush.Style := bsClear;
          Rectangle(Rct);
        end;
    end;是在onpaint里,一楼是想当然的。
      

  3.   

    请问楼主或别的朋友,DBGRIDEH (v2.0)在delphi5下如何注册。我是初学者,请指教!!