如何自动刷新stringgrid。
我调用的是selectcell事件,在stringgrid完成一次显示的时候,我触发该事件。返回行号。
我想在不进行任何其他操作的情况下,点击同一位置,再次返回行号。但是这样做。有一点小问题
再次点的时候不返回行号。我觉得是应该刷新一下,但是如何刷新呢?
问题的规律。
在点击第一个位置之后,返回第一位置的行号。点击第二个位置,然后再点击第一个位置,这时才可以再次返回第一位置的行号。

解决方案 »

  1.   


    //我给你想了一个办法,但不一定是最好的办法。//拖一个ApplicationEvents控件到Form上,然后在它的OnMessage事件写处理过程如下:procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    var
      sClass: array[0..255] of char;
    begin
      FillChar(sClass, 256, #0);
      GetClassName(Msg.hwnd, sClass, 256);
      if (StrPas(@sClass[0]) = 'TStringGrid') or (StrPas(@sClass[0]) = 'TInplaceEdit') then
        if Msg.message = WM_LButtonUp then
          //Caption := Formatdatetime('hh:nn:ss', Now);
          Showmessage(Format('%d,%d',[StringGrid1.Col, StringGrid1.Row]));
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      StringGrid1.Options := StringGrid1.Options + [goEditing, goAlwaysShowEditor];
    end;
      

  2.   

    TStringGrid.OnClick应该不好用的了,因为如果StringGrid设置为:StringGrid1.Options := StringGrid1.Options + [goEditing{, goAlwaysShowEditor}];时,一次单击后消息就改由TInplaceEdit接收了
      

  3.   

    写一个刷新函数加在private里,在你想刷新的时候调用一下就可以了,刷新函数里其实也就是从新搜索一下数据库