如上图黄色单元格位置
我用如下代码,给单元格添加了边框procedure TForm4.HNsGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
temp: TRect;
begin
if (HNsGrid1.Focused) and (HNsGrid1.Col = ACol) and (HNsGrid1.Row = ARow) then
begin temp.top := Rect.top-3;
temp.left := Rect.Left-3;
temp.right := Rect.right-1;
temp.Bottom := Rect.Bottom-1; HNsGrid1.Canvas.Pen.Color := clBlack;
HNsGrid1.Canvas.Brush.color := clRed;
HNsGrid1.Canvas.Brush.Style := bsClear;
HNsGrid1.Canvas.Pen.Width := 5; HNsGrid1.Canvas.Rectangle(temp); end;
end;但是出来的效果,如图所示
上和左的边框出来了,右和下的边框不知道为什么被遮挡住了。
大家遇到过没?
求解决办法,谢谢了
我用如下代码,给单元格添加了边框procedure TForm4.HNsGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
temp: TRect;
begin
if (HNsGrid1.Focused) and (HNsGrid1.Col = ACol) and (HNsGrid1.Row = ARow) then
begin temp.top := Rect.top-3;
temp.left := Rect.Left-3;
temp.right := Rect.right-1;
temp.Bottom := Rect.Bottom-1; HNsGrid1.Canvas.Pen.Color := clBlack;
HNsGrid1.Canvas.Brush.color := clRed;
HNsGrid1.Canvas.Brush.Style := bsClear;
HNsGrid1.Canvas.Pen.Width := 5; HNsGrid1.Canvas.Rectangle(temp); end;
end;但是出来的效果,如图所示
上和左的边框出来了,右和下的边框不知道为什么被遮挡住了。
大家遇到过没?
求解决办法,谢谢了
解决方案 »
- 关于TDBChart的问题
- Edit获得焦点后如何不进入编辑状态??
- 熟悉XML的朋友请进(用delphi生成换行的XML)
- 两个关于IUnknown的问题
- 在服务器端数据库(access)中数据转换xml格式后传到客户端显示,高分请教,问题解决再加分!!急急急!!
- 祈祷sars早日被消灭!
- 高手快帮忙,关于Treeview里节点的绝对索引(AbsoluteIndex)的问题
- 如何获取系统格式的日期?
- 如何在一个位图上面画一块单色的矩形区域,并使矩形区域半透明.
- 如何写这条SQL
- 新手求delphi2010用相对路径连接sql2005数据库急求啊!谢谢各位高手!
- 已知一个窗体句柄,获取窗体某一个属性的值
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s: string;
begin
s := AdvStringGrid1.Cells[ACol, ARow];
if ARow mod 2 = 0 then
begin
AdvStringGrid1.Canvas.Font.Color := clBlack;
AdvStringGrid1.Canvas.Brush.Color := $00FFCACA;
AdvStringGrid1.Canvas.FillRect(Rect);
AdvStringGrid1.Canvas.TextOut(Rect.Left, Rect.top, s);
end; if gdFocused in State then
begin
AdvStringGrid1.Canvas.Brush.Color := clYellow;
AdvStringGrid1.Canvas.FillRect(Rect);
AdvStringGrid1.Canvas.Pen.Width := 3;
AdvStringGrid1.Canvas.Pen.Color := clBlue;
AdvStringGrid1.Canvas.Pen.Style := psInsideFrame;
AdvStringGrid1.Canvas.Rectangle(AdvStringGrid1.CellRect(ACol, ARow));
AdvStringGrid1.Canvas.TextOut(Rect.Left + 5, Rect.top +3, s);
AdvStringGrid1.Canvas.Brush.Color := clBlue;
AdvStringGrid1.Canvas.DrawFocusRect(AdvStringGrid1.CellRect(ACol, ARow));
end;
end;
AdvStringGrid1.HideFocusRect:=true;
AdvStringGrid1.SelectionColor:=clYellow;
AdvStringGrid1.SelectionRectangle:=true;应该能满足你的需求的最简单的方式。