カレンダーを作る
その6 カレンダーの見栄えをよくする
今回は,カレンダーの見栄えをよくしてみます。
行うことは,カレンダーの周りの枠をなくすことと,枠をなくすことでカレンダーが移動できなくなるので,マウスで移動できるようにすることです。
カレンダーの枠をなくす
これは簡単にできます。
画面左下にある「オブジェクトインスペクタ」でform1を選択し,プロパティにある「BoderStyle」の「bsSizeable」を「bsNone」に変えるだけです。これで実行すると,周りの枠が消えて白一色の中にカレンダーが表示されていると思います。
これで見栄えはよくなりますが,これをするとカレンダーの移動ができなくなります。そこでマウスでカレンダーを動かすことができるようにしてみます。
カレンダーをマウスで動かす
カレンダーをマウスで動かすために,「Image1MouseDown」,「Image1MouseMove」,「Image1MouseUp」の3つのイベントハンドラを使います。このうちの「Image1MouseDown」はポップアップメニューを表示させるためにすでに呼び出してありますので,あとの2つを呼び出し,下のようにソースを記述します。
private
{ Private 宣言 }
ye,mo:string;
size:integer;
mx,my:integer; //これを追加します
public
{ Public 宣言 }
end;
:
:
:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
//マウスが押されたとき
Shift: TShiftState; X, Y: Integer);
begin
if ssright in Shift then begin
//もし右ボタンが押されたら
popupmenu1.Popup(form1.left+x,form1.top+y);
//ポップアップメニューを表示
exit; //このプロシージャを終了させる
end;
mx:=x; //マウスが押された場所のX座標をmxに保存する
my:=y; //マウスが押された場所のY座標をmyに保存する
image1.Tag:=1; //image1.Tagを1にすることにより,マウスが押されていることを示す
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
//マウスが動いたとき
Y: Integer);
begin
if image1.Tag=1 then begin //もしマウスが押されていたら
form1.Left:=form1.Left+x-mx; //マウスを動かすことでform1のLeftも動かす
form1.Top:=form1.Top+y-my; //マウスを動かすことでform1のTopも動かす
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
//マウスのボタンを離したとき
Shift: TShiftState; X, Y: Integer);
begin
image1.Tag:=0; //image1のTagを0にする
end;
上記のソースを記述した後,実行すると下のようになります。
(図はマウスを右クリックしてポップアップメニューを表示させています。)

次回から,form2でいろいろな設定を行いたいと思います。