有一个文本文件,如下形式:
a 1 e
b 2 f
c 3 g
d 4 h
e 5 i
如何实现其按行滚动显示在stringgrid中,一个cells中显示一个数。谢谢啦

解决方案 »

  1.   

    新建一个工程,双击窗体、将下列代码覆盖你的unit1unit Unit1;interfaceuses
      Windows, SysUtils, Classes, Controls, Forms,
      StdCtrls, ExtCtrls, Grids;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure Timer1Timer(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    var r:integer;
        sl:array[0..2]of TStringList;
        StringGrid1:TStringGrid;
        Timer1: TTimer;procedure TForm1.FormCreate(Sender: TObject);
    var i:integer;
    begin
      Height:=320;
      Width:=420;
      Position:=poScreenCenter;
      OnCloseQuery:=FormCloseQuery;
      for i:=0 to 2 do
        sl[i]:=TStringList.Create;
      for i:=0 to 4 do begin
        sl[0].Append(char(i+ord('a')));
        sl[1].Append(char(i+ord('1')));
        sl[2].Append(char(i+ord('e')));
      end;
      for i:=5 to 7 do begin
        sl[0].Append('');
        sl[1].Append('');
        sl[2].Append('');
      end;
      StringGrid1:=TStringGrid.Create(self);
      with StringGrid1 do begin
        RowCount:=8;
        Parent:=Form1;
        Width:=338;
        Height:=210;
        FixedCols:=0;
        FixedRows:=0;
        Left:=40;
        Top:=30;
      end;
      Timer1:=TTimer.Create(self);
      Timer1.OnTimer:=Timer1Timer;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var i,x:integer;
    begin
      for i:=0 to 7 do begin
        x:=(r+i)mod 8;
        StringGrid1.Cells[1,i]:=sl[0][x];
        StringGrid1.Cells[2,i]:=sl[1][x];
        StringGrid1.Cells[3,i]:=sl[2][x];
      end;
      //滚上:
      inc(r);
    {
      //滚下:
      r:=r+8;
      dec(r);
    }
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    var i:integer;
    begin
      Timer1.Enabled:=false;
      Timer1.Free;
      StringGrid1.Free;
      for i:=0 to 2 do sl[i].Free;
    end;end.