−トップへ−

カレンダーを作る
その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でいろいろな設定を行いたいと思います。

−トップへ−