如何在StringGrid中设置其中一行的字体格式、颜色等? 小弟想要在StringGrid中设置其中一行的字体格式、颜色等,在DrawCell事件中写代码,用DrawText写,但是有一个问题,就是设完一行后,这行的最后一列那格会再变回默认的字体格式,前面几格就是我所想要的效果。将DefaultDraw属性设为False后可以解决这个问题,但在拖动格子时边框就会乱掉。不知道有哪位大哥碰到过这个问题?能否告知一个解决的方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DefaultDraw:=False;后不会重绘控件-->拖动格子时边框当然会乱掉.如果想要实现你所要的功能,最好从StringGrid的祖先中去继承. 参考dbgrid的用法,有很多这样的贴子http://blog.csdn.net DefaultDraw:=False;在Grid1DrawCell中 with Sender as TStringGrid do begin .... if (ACol =ColCount -1) then begin Canvas.Font.Style:= [fsBold]; ... end; ... end; 我用profgrid控件了,还是这样最方便 //参考如下代码type TStringGridEx = class(TStringGrid);procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);begin if not ((ACol = 2) and (ARow = 2)) then Exit; TStringGridEx(Sender).OnDrawCell := nil; try TStringGridEx(Sender).Canvas.Font.Color := clRed; TStringGridEx(Sender).Canvas.Brush.Color := clYellow; TStringGridEx(Sender).Canvas.Font.Name := '黑体'; TStringGridEx(Sender).Canvas.Font.Size := 16; TStringGridEx(Sender).DrawCell(ACol, ARow, Rect, State); finally TStringGridEx(Sender).OnDrawCell := StringGrid1DrawCell; end;end; 100分求用Delphi+WebBrowser取得JavaScript变量问题 关于delphi调用vc编写的dll中参数类型问题 一个关于TTreeNode类的问题。一定要看看呀!! 关于注册表的问题,请教各位 元旦快乐! 招聘Delphi程序员(人才难求啊,请大家见谅) 牡丹——艳冠群芳——任是无情也动人 我用BDE默认的格式创建一个DBF(VFP)格式的数据表,怎么解决字段不正确的现象?? 想实现登陆后关闭登陆窗体显示另外一个窗体 我解决不出,查询不了! 用QREPORT,如何将单元格四周的边框都显示出来? 在Desktop的底层输出,高手请进
如果想要实现你所要的功能,最好从StringGrid的祖先中去继承.
http://blog.csdn.net
在Grid1DrawCell中 with Sender as TStringGrid do
begin
.... if (ACol =ColCount -1) then
begin
Canvas.Font.Style:= [fsBold];
...
end; ...
end;
type
TStringGridEx = class(TStringGrid);procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not ((ACol = 2) and (ARow = 2)) then Exit;
TStringGridEx(Sender).OnDrawCell := nil;
try
TStringGridEx(Sender).Canvas.Font.Color := clRed;
TStringGridEx(Sender).Canvas.Brush.Color := clYellow;
TStringGridEx(Sender).Canvas.Font.Name := '黑体';
TStringGridEx(Sender).Canvas.Font.Size := 16;
TStringGridEx(Sender).DrawCell(ACol, ARow, Rect, State);
finally
TStringGridEx(Sender).OnDrawCell := StringGrid1DrawCell;
end;
end;