3

私が今やろうとしているのは、TMemoコンポーネントとTTimerを使用してクレジットテキストを作成することです。

 procedure TAboutBox.Timer1Timer(Sender: TObject);
 begin
 Memo1.ScrollBy(0,-1);
 end;

Tmemo行には、次のようなクレジットのテキストが含まれています。

ありがとう:
Junifer lamda
Exemple user
2CoderMonalisa
など

すべてが期待どおりに機能します。timer.intervalを1msに設定すると、テキストはスムーズにスクロールしますが、最初の3行だけが表示され、メモ内でマウスを使用して手動でクリックしてドラッグしない限り、空白が表示されます。いくつかの行が表示され、離すと再び消えます。

TRicheditとTListBoxの両方で試しましたが、問題は解決しません。これはどうやってできるの ?

4

1 に答える 1

4

ScrollByあなたが望むことをするように設計されていないように私には思えます。おまけにそれも必要ないと思いTMemoます。

私はおそらくラベルでこれを行い、タイマーイベントに移動します。このような:

procedure TScrollingTextForm.FormCreate(Sender: TObject);
begin
  Label1.Caption :=
    'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do '+
    'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad '+
    'minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip '+
    'ex ea commodo consequat. Duis aute irure dolor in reprehenderit in '+
    'voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur '+
    'sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt '+
    'mollit anim id est laborum.';
  Label1.Top := ClientHeight;
end;

procedure TScrollingTextForm.Timer1Timer(Sender: TObject);
begin
  Label1.Top := Label1.Top - 1;
end;

DoubleBuffered := Trueスクロール時のちらつきを避けるために、フォームをダブル バッファ ( ) にする必要があることがわかりました。

于 2012-01-01T15:01:28.590 に答える