こんにちは、正しい答えが見つからない 3 日後、私はあなたに助けを求めに来ます :)、私の質問はこれです。フォームに TScrollBox コンポーネントがあり、FormCreate イベントで TImage コンポーネントを作成します。これにより、スクロールボックスがコンポーネントで埋められます。しかし、スクロールバイを使用してそれらをスクロールしたい場合、最後のコンポーネントの終わりをはるかに超えて、コードは2つのボタンとマウスホイールで実行されます1ボタン左2ボタン右とマウスホイール両側
procedure TForm1.RightButtonClick(Sender: TObject);
var
Coff : Double;
begin
Coff := 6.6;
scrollbarpos := scrollbarpos - 100;
if((scrollbarpos>= -Coff * screen.PixelsPerInch) AND (scrollbarpos<=0)) then
begin
ScrollBox1.ScrollBy(-100,0);
end
else
begin
scrollbarpos := scrollbarpos + 100;
if(scrollbarpos < -(Coff /2) * screen.PixelsPerInch) then
begin
ScrollBox1.ScrollBy(-Round(scrollbarpos+Coff *screen.PixelsPerInch),0);
scrollbarpos := round( -Coff * screen.PixelsPerInch);
end;
end;
end;
このコードは機能しますが、「コントロール パネル\外観と個人設定\表示」の設定を小さいものから 100% から中または大に変更すると、最後のコンポーネントを超えてしまい、Coff 値と関係があります。スクロールバーは見えないため、スクロールバーを使用せずにスクロールするより効果的な方法のアイデア。
プロジェクトはここにあります: http://www.failai.lt/i9famvv1my9f/proj.rar.htm