|
絵の描き方が分かった次は、マウス操作についてです。
Windowsの場合、通常、フォームの上にマウスがある場合には、マウスで何かをした時に、そのフォームでマウスイベントが発生します。また、フォームの上にImageコンポーネントを置いて、そのImageコンポーネントの上でマウスを操作した場合、そのImageでマウスイベントが発生します。
【OnMouseMove】マウスを移動させた時に発生するイベント
Imageコンポーネントを選択している状態で、オブジェクトインスペクタの[イベント]の「OnMouseMove」の入力欄をダブルクリックすると、自動的に
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
(ここにマウスを移動している時の処理を書きます)
end; |
と表示されます。
【OnMouseDown】マウスボタンを押した時に発生するイベント
Imageコンポーネントを選択している状態で、オブジェクトインスペクタの[イベント]の「OnMouseDown」の入力欄をダブルクリックすると、自動的に
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
(ここにマウスのボタンを押した時の処理を書きます)
end; |
と表示されます。
【OnMouseUp】マウスボタンを離した時に発生するイベント
Imageコンポーネントを選択している状態で、オブジェクトインスペクタの[イベント]の「OnMouseUp」の入力欄をダブルクリックすると、自動的に
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
(ここにマウスのボタンを離した時の処理を書きます)
end; |
と表示されます。この処理は利用されない場合が多いです。
X、Yには、マウスのある座標が入ります。この場合は、Image1上のドット座標が入ります。
Shiftには、マウスを操作する際に、[Alt]キー、[Ctrl]キー、[Shift]キーを同時に押しているかどうか、また、マウスのどのボタンを押しているか、を判定させる事が出来ます。
|
ssAlt
ssCtrl
ssShift
ssLeft
ssRight
ssMiddle
ssDouble | |
[Alt]キーが押されている
[Ctrl]キーが押されている
[Shift]キーが押されている
マウスの左ボタンが押されている
マウスの右ボタンが押されている
マウスの中央ボタンが押されている
マウスがダブルクリックされた |
Buttonには、どのマウスボタンを押してイベントが発生したのかたのかが入ります。このButtonでは同時押しのチェックは出来ません。同時押しをチェックする場合には、Shiftを使ってください。
|
mbLeft
mbRight
mbMiddle | |
マウスの左ボタンを押した
マウスの右ボタンを押した
マウスの中央ボタンを押した |
Imageコンポーネントには、クリックした時のイベント【OnClick】やダブルクリックした時のイベント【OnDblClick】がありますが、これらは通常、Imageコンポーネントに絵を描かせて、それを例えばボタンのアイコンのように見立ててクリック選択させる時などで利用されると思われます。OnMouseMoveやOnMouseDownと併用して利用される事はほとんど無いだろうと思われます。
それでは今回の【ソース・プログラム】
マウス動作の確認用プログラムです。
上記の「Shift」の値を確認する際には、
if ssAlt in Shift then
([ALT]キーを押した時の処理) |
のように「in」を使います。Shift内にssAltがある場合、ってイメージでしょうか。
マウス動作をステータスバーに表示しています。
ステータスバーに1つの文字列しか書かないのであれば、「SimplePanel」プロパティを「True」にして、書きたい文字列を「SimpleText」に入れておくのが簡単です。しかし、今回のように複数の文字列を書かせたい場合には、「SimplePanel」プロパティは「False」のまま、ステータスバーを右クリックして表示されるメニューの「パネルの設定」を選びます。すると、その設定用の画面が表示されます。
新規追加ボタンをクリックすると、「0 - TStatusPanel」と表示され、その項目をクリックすると、オブジェクトインスペクタに「StatusBar1.Panels[0]」のプロパティ設定が出来るようになります。新規追加を3回行うと、ステータスバーには3箇所の表示項目が出来ます。表示項目の幅は、その「Width」プロパティで設定します。そこに文字列を表示させたい場合には、
StatusBar1.Panels[0].Text := '●●●'; |
のように書きます。
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|