【Delphi初心者】今から始めるDelphi Part01
スクロール上で右クリックのままドラッグでぐりぐり動かすとスクロール内もそれにあわせて動くってのはどうやるんだ?
教えてエロイ人
右クリックでスクロールバーぐりぐりすると何かいいことあるんか?
>>490 1. OnMouseDownで現在のX,Y座標を取得 + スクロール中フラグを立てる。
2. OnMouseMoveでスクロール中フラグが立っていたなら、1のX,Y座標と
現在のX,Y座標の差を取り、スクロールバーのPositionにセット。
3. OnMouseUpでスクロール中フラグを下ろす。
おお、ありがとうございます。
いえ、ちょっとゲームを作ってまして…。
画面のスクロールでそれができたら楽だなぁ、と。
早速記述したんですが、何か違うっぽい…orz
procedure TForm1.ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X1, Y1: Integer);
begin
MouseDown := True;
end;
procedure TForm1.ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X1, Y1: Integer);
begin
MouseDown := False;
end;
ではいけないんですか?
一応グローバル変数のところには
MouseDown : Boolean;
と書いてあるんですが。
それただフラグ立てただけ。
X,Y も記録 MouseMove でずれ取得 ずれ分スクロール
あ、いえMouseDown/MouseUpだけでテストしてからMouseMoveしようとして、
その時点でエラーが出たんです。
言い忘れてましたね。すいませんです。
問題はどうしてこの時点でエラーが出るんだろということです。
その後、X1-X2,Y1-Y2をそれぞれHorzScrollBar.PositionとVertScrollBar.Positionに足せばいいんですよね?
こっちはエスパーじゃないのでエラーの内容を晒せ。
MouseDown := True;
MouseDown := False;
それぞれに「実パラメータが足りません」との表示が。
TFormにはMouseDownというメソッドがあって名前がかぶってるので、変数名を変える。
ナルホド、MouseDownCheckに名前を変えたらサクサクできました。
ありがとうございます。