ScrollBox上でImageを正確な位置に配置するには?

解決


eshter  2008-05-19 21:30:46  No: 30734

ScrollBox上にImageを動的に生成しているのですが、ScrollBoxのスクロールバーを移動させると、次に生成されるImageの位置が正確ではありません。
うまく説明できないので、ソースを載せます。

procedure TForm1.Button1Click(Sender: TObject);
var Image: TImage;
begin
  Image := TImage.Create(ScrollBox1);
  with Image do begin
    Imagelist1.GetBitmap(i,Image.Picture.Bitmap);
    Parent  := ScrollBox1;
    Name    := 'Image' + IntToStr(i);
    Height  := 100;
    Width   := 100;
    Left    := 1;
    Top     := i*100;
    Tag     := i;
  end;
  i := i + 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  i := 0;
end;

Button1を押すたびにImageListに格納しているImageを呼び出し、100*100のImageを縦方向に並べているのですが、
Scrollバーが出現した後にそのバーを動かすと、その後に生成されるImageの位置がずれてしまいます。
スクロールバーを動かしてもImageの位置がずれないようにする方法はありますか?


ttt  2008-05-19 23:00:00  No: 30735

>    Top     := i*100;
ScrollBoxは内部のコンポーネントの絶対的な座標を管理しているわけではなく、
スクロールバーが操作されるたびに「現在の位置から」コンポーネントをずらすだけです。
なので、Imageを作る時点でスクロールバーの位置(VertScrollBar.Position)の分だけずらしてみてください。


eshter  2008-05-22 19:36:49  No: 30736

tttさん

回答ありがとうございます。

Top     := i*100 - ScrollBox1.VertScrollBar.Position;

と記述したら、自分が考えていた動作になってくれました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加