数据列表刷新
用到的控件:
indy中的IdTCPClient与IdTCPServer; 
StringGrid控件
数据结构:
Type                  //定义发送数据列表数据结构
  TSendList = Record
    IpAddress:string;    //IP地址
    RecPort:integer;     //通道号
  end;
  
type                 //定义定时数据结构
  ConnectTime=Record
    Port:integer;  //通道号
    Id:integer;  //发送列表位置
    Times:integer;  //计数器
  end;
  
要求:
客户端:发送IP地址、通道号(已完成!)
服务端: 接收IP地址、通道号,并根据通道号(列号)填写IP地址,同时要定时监控对应的IP是否在线,如果不在线就清空,如果在线则复位定时数组;
StringGrid列表:登记IP地址,如有IP地址清空则把对应列并且在线的IP地址往上移,保证对应列不要出现空白的单元格出现;

解决方案 »

  1.   

    建议使用TListView替代StringGrid,会比较好控制。
      

  2.   

    StrGrid.DefaultDrawing :=false;(初始化窗体时)
    数据可以先保存在结构或者数组等地方,
    在StrGridDrawCell里把数据画到每个格子里
    调用StrGrid.Repaint;对窗体刷新,这个时候上面事件就会把该画的画出来。
    你可以根据每个格子的rect,再通过设置画刷,画笔等,加上象素的计算
    用StrGrid.Canvas.TextOut画不同颜色,不同字体等多种元素