我的字符串网格(TStringGrid
)有2列和1行(Property: ColCount = 2 & Rowcount = 1
。
OnDrawCell
事件的代码:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Parametertext : string;
begin
case ACol of
0 : Parametertext := 'Test';
1 : Parametertext := 'Test1';
end;
stringgrid1.Brush.Color := clBtnFace;
stringgrid1.Font.Color := clWindowText;
stringgrid1.Canvas.FillRect(Rect);
DrawText(stringgrid1.Canvas.Handle, PChar(parameterText), -1, Rect,
DT_SINGLELINE);
end;
问题:
当我尝试使用StringGrid1.Cells[0,0]
,StringGrid1.Cells[1,0]
,
我除了“测试”和& “Test1”但它总是给出一个空字符串“”。
如何使用StringGrid.Cells[aCol,aRow]
?#/ p>从字符串网格中获取文本
答案 0 :(得分:0)
要执行您要求的操作,您需要将字符串值实际存储在Cells
属性中,而不是在OnDrawCell
事件中动态生成它们:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Parametertext : string;
begin
Parametertext := StringGrid1.Cells[ACol, ARow];
StringGrid1.Brush.Color := clBtnFace;
StringGrid1.Font.Color := clWindowText;
StringGrid1.Canvas.FillRect(Rect);
DrawText(StringGrid1.Canvas.Handle, PChar(ParameterText), Length(ParameterText), Rect, DT_SINGLELINE);
end;
...
StringGrid1.Cells[0, 0] := 'Test';
StringGrid1.Cells[1, 0] := 'Test1';
如果您不打算使用Cells
属性来存储字符串,您也可以使用TDrawGrid
代替。