类似 火车站OR机场 候车厅  站次信息大屏幕的效果
屏幕只显示10条记录,循环刷新,10秒之后第一条记录消失,第二条记录上升到第一位,依次,第11条记录进入屏幕显示在第10位。
数据来源于数据库

解决方案 »

  1.   

    前面已经做到了一种效果:每隔10秒切换10条记录,1-10秒显示前10条,11-20秒显示第11-20条记录依次。
    怎么做到目前要求的:一条一条的刷新,而且刷新不是按时间来排,有个FLAG 更新了就刷新。
      

  2.   

    做一个10行的stringgrid
    写一个函数: put10(iStart:integer);
    从iStart开始循环10次,把行号对应的记录输出到stringgrid
      

  3.   

    用 PME 形式定义一个属性Flag: Boolean Read FFlag Write SetFFlag;
    写个方法SetFFlag,实现所要实现的内容,从屏幕每条记录去获取对应的数据库中的记录。
    方法灵活些,有待后续需求变动时方便修改。
    剩下留下遐想空间留待后面各位高手给出具体的思路。
      

  4.   

    PME是Properties-Method-Event架构的简称.
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     type
      TForm1 = class(TForm)
        button1:tbutton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        FValue: string;
        FOnChange: TNotifyEvent;
        function getValue: string;
        procedure setValue(const Value: string);
      public
          procedure yes(Sender: TObject);
      published  
        property Value: string read getValue write setValue;    property OnChange: TNotifyEvent read FOnChange write FOnChange;
      end;var
      Form1: TForm1;implementation{$R *.dfm}function TForm1.getValue: string;
    begin
      Result := FValue;
    end;procedure TForm1.setValue(const Value: string);
    begin
      if Value <> FValue then
      begin
        FValue := Value;
        if Assigned(FOnChange) then FOnChange(Self); 
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      OnChange:=yes;
    end;procedure TForm1.yes(Sender: TObject);
    begin
     showmessage(fvalue);
    end;    procedure TForm1.Button1Click(Sender: TObject);
    begin
       form1.Value:='sdfdsf';
       form1.Value:='j';
       form1.value:='sdf'
    end;end.
    效果就是,value一变,就会触发yes事件。
    你可以用这个方法做到你所说的效果:
    怎么做到目前要求的:一条一条的刷新,而且刷新不是按时间来排,有个FLAG 更新了就刷新。
    只是把value改成flag就好了。