如何使该控件的某一列自动的填上某一个值,如:只要是第二列,自动生成一个‘1’,我在ondrawcell中,但是这个事件老是被触发,想把‘1’改成‘2’都不行。我又不想写onselectcell这个事件,因为这个事件只在点击时才会触发。该写哪个事件的代码?谢谢!

解决方案 »

  1.   

    ondrawcell事件:if key=13 then
      

  2.   

    可以在初始化stringgrid的时候直接给cell付值吧
      

  3.   

    从TStringGrid继承一个新的VCL组件,如TTextGrid,然后重载TStringGrid的Paint过程:
    ...
    procedure Paint; Override;
    ...
    ...
    procedure TTextGrid.Paint;
    begin
    inherited;
    ProcSetText();//调用你想实现的内容的过程
    end;
      

  4.   

    写一个自动给StringGrid赋值的函数,在适当的时候调用它就是自动的了!
    Procedure SetStringGridValue(Grid:TStringGrid:nCol:Integer,Value:Integer);
    如你所要求,在显示的时候调用一次,在添加新列的时候调用一次。
      

  5.   

    不太明白你的意思,是这样吗?for i:=0 to stringgrid1.colcount-1 do
    stringgrid1.Cols[i].text:=inttostr(i);放在窗体中onshow或者oncreate事件中都可以啊,如果在设计时就有这种效果,可以自己从Tstringgrid下面继承一个类,覆盖其Create ,将类似上述代码加入就可以了;