【Delphi初心者】今から始めるDelphi Part01

このエントリーをはてなブックマークに追加
490デフォルトの名無しさん
スクロール上で右クリックのままドラッグでぐりぐり動かすとスクロール内もそれにあわせて動くってのはどうやるんだ?
教えてエロイ人
491487:04/11/30 20:23:28
>>488
おお! サンクス!!
492デフォルトの名無しさん:04/11/30 21:07:17
右クリックでスクロールバーぐりぐりすると何かいいことあるんか?
493デフォルトの名無しさん:04/11/30 21:12:56
>>490
1. OnMouseDownで現在のX,Y座標を取得 + スクロール中フラグを立てる。
2. OnMouseMoveでスクロール中フラグが立っていたなら、1のX,Y座標と
現在のX,Y座標の差を取り、スクロールバーのPositionにセット。
3. OnMouseUpでスクロール中フラグを下ろす。
494デフォルトの名無しさん:04/11/30 22:25:52
おお、ありがとうございます。
いえ、ちょっとゲームを作ってまして…。
画面のスクロールでそれができたら楽だなぁ、と。
495490:04/11/30 22:54:43
早速記述したんですが、何か違うっぽい…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;
と書いてあるんですが。
496デフォルトの名無しさん:04/11/30 23:21:15
それただフラグ立てただけ。

X,Y も記録 MouseMove でずれ取得 ずれ分スクロール
497490:04/12/01 18:52:13
あ、いえMouseDown/MouseUpだけでテストしてからMouseMoveしようとして、
その時点でエラーが出たんです。
言い忘れてましたね。すいませんです。
問題はどうしてこの時点でエラーが出るんだろということです。

その後、X1-X2,Y1-Y2をそれぞれHorzScrollBar.PositionとVertScrollBar.Positionに足せばいいんですよね?
498デフォルトの名無しさん:04/12/01 19:09:07
こっちはエスパーじゃないのでエラーの内容を晒せ。
499490:04/12/01 19:15:41
MouseDown := True;
MouseDown := False;
それぞれに「実パラメータが足りません」との表示が。
500デフォルトの名無しさん:04/12/01 19:27:06
TFormにはMouseDownというメソッドがあって名前がかぶってるので、変数名を変える。
501490:04/12/01 19:37:24
ナルホド、MouseDownCheckに名前を変えたらサクサクできました。
ありがとうございます。