使用TStringGrid的DrawCell事件,如下GrdLocation为TStringGrid实例名:
procedure TFrm_Q_Stk_StoreMap.GrdLocationDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var iState, str: string; //iState 1:可用 2:待处理 3:不可用
begin
inherited;
if (ACol > 0) and (ARow > 0) then
begin
GrdLocation.Canvas.FillRect(Rect);
str := GrdLocation.Cells[ACol,ARow];
iState := Copy(str,1,1);
str := Copy(str,2,Length(str)-1);
if (gdSelected in State) then
GrdLocation.Canvas.Brush.Color :=clBlue
else if iState = '1' then
GrdLocation.Canvas.Brush.Color :=clWhite
else if iState = '2' then
GrdLocation.Canvas.Brush.Color :=$00FFB9B9
else
GrdLocation.Canvas.Brush.Color:=$00D0DEDF; GrdLocation.Canvas.FillRect(Rect);
DrawText(GrdLocation.Canvas.Handle,PChar(str),Length(str),Rect,DT_CENTER or DT_VCENTER or DT_WORDBREAK);
end;
end;要在StringGrid的Cell中换行显示,可以用 #13#10,如:
sCellValue := "ABCD" + #13#10 + CustomerKey + PartCode + ':(' + Store_Qty + ')' + #13#10 + PartName;
GrdLocation.Cells[X,Y] := sCellValue;
procedure TFrm_Q_Stk_StoreMap.GrdLocationDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var iState, str: string; //iState 1:可用 2:待处理 3:不可用
begin
inherited;
if (ACol > 0) and (ARow > 0) then
begin
GrdLocation.Canvas.FillRect(Rect);
str := GrdLocation.Cells[ACol,ARow];
iState := Copy(str,1,1);
str := Copy(str,2,Length(str)-1);
if (gdSelected in State) then
GrdLocation.Canvas.Brush.Color :=clBlue
else if iState = '1' then
GrdLocation.Canvas.Brush.Color :=clWhite
else if iState = '2' then
GrdLocation.Canvas.Brush.Color :=$00FFB9B9
else
GrdLocation.Canvas.Brush.Color:=$00D0DEDF; GrdLocation.Canvas.FillRect(Rect);
DrawText(GrdLocation.Canvas.Handle,PChar(str),Length(str),Rect,DT_CENTER or DT_VCENTER or DT_WORDBREAK);
end;
end;要在StringGrid的Cell中换行显示,可以用 #13#10,如:
sCellValue := "ABCD" + #13#10 + CustomerKey + PartCode + ':(' + Store_Qty + ')' + #13#10 + PartName;
GrdLocation.Cells[X,Y] := sCellValue;
解决方案 »
- 有点挑战的问题,如何拦截(获得)网页上类似‘登录’、‘确定’按钮的提交消息??希望各位大侠踊跃发言!
- delphi6中Qreport的打印问题
- 我用keybd_event模拟键盘按键,在WIN2000中可以,为什么在98中不行?
- char如何转换成byte
- 各位兄弟帮忙!我用adoconnection连接sql2000 为什么在别的机子上运行我的程序就报用户名sa登陆失败呢?
- 再三求教!!button问题!!
- C中有变量声明与定义的区别,Pascal中有吗?
- 为什么时间字段上传到MSSQL数据库表中,时间值会有所改变?
- 一个USB设备,有驱动,但可以自己写操作软件吗?
- 如何用API函数压缩一个目录?
- XE4中大家都用什么报表系统啊
- delphi添加数据时报错
procedure TFrm_Q_Stk_StoreMap.GrdLocationDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var str: string;
begin
if (ACol > 0) and (ARow > 0) then
begin
GrdLocation.Canvas.FillRect(Rect);
str := GrdLocation.Cells[ACol,ARow] + #13#10 + '测试字串'; if (gdSelected in State) then
GrdLocation.Canvas.Brush.Color :=clBlue
else
GrdLocation.Canvas.Brush.Color:=$00D0DEDF; GrdLocation.Canvas.FillRect(Rect);
DrawText(GrdLocation.Canvas.Handle,PChar(str),Length(str),Rect,DT_CENTER or DT_VCENTER or DT_WORDBREAK);
end;
end;