在使用 tstringgrid 控件的时候,需要显示行选,方便客户浏览。其本身带了一个 goRowSelect 属性。设为true可以整行高亮显示,但这样的话就无法编辑单个单元格的内容了。
为解决这个问题,采用了一个变通的方法:
1.在onselect 事件内添加如下代码:
GV_row:= ARow; //gv_row 是一个全局变量。
stringgrid1.Repaint;
2.在onDrawCell 事件内添加如下代码:
if (Arow= GV_row) then
with Stringgrid1.Canvas do
begin
brush.Color:=$00F0F0; //设置虚线的颜色
DrawFocusRect(Rect);
end;
现在,选中的单元行就有了一个蓝色的虚线包围着了,达到了标识当前选中行的目的。