初めて作る C# プログラム - MyClock

プログラム電卓のためのC#プログラミング
e-Gadget

<トップページへ>


2017/01/31
大きく改訂 2017/02/22

更新: 最新版 MyClock Ver 1.17.5、scClock Ver 3.01 を公開(ソース付き)


初めて作る C# プログラム - MyClock


無償で入手できる開発環境 Visual Studio Community 2015 の C# を初めて触ってみながら、具体的なプログラムを作ってみます。

プログラミングの習得に効果的なのは、自分が欲しいプログラムを作ること、そして人に説明すること。私の持論です。最初は簡単に作れそうで、機能追加で欲しいプログラムになりそうなものが良いですね。


はじめに

シンプルな時計から始めます。

というのも、10年以上前に、アクティブになっているウィンドウのタイトルバーに常に張り付く小さな時計 scClock を作り、いまだに愛用しています。番外編 - 小さな時計 - scClock をご参照。

ところが最近は、目が疲れてくると小さな時計のフォントの視認に困ることがあります。フォントを大きくするとタイトルバーには収まりそうにないので、半透明で大きなフォントの時計にすれば良いかも知れない...ということで、老眼が始まった世代のための邪魔にならないデジタル時計...というコンセプトでアプリを作ることにしました。



[2017/02/14 追記]
10年以上前に Active Basic (Windows XP) で作った 小さな時計 - scClock を作って常用してきました。今回作ったMyClock のフォントや外観を小さくすることで scClock として作り直し、アクティブなキャプションバーに貼り付く機能を追加しました。これを Win 7 以降 (対象のフレームワークは .NT Framework 3.5) に対応する scClock Ver 3.01 としました。 

小さな時計 - キャプションバーに張り付く時計 (ソース付き)
scClock Ver 3.01



PC保護の警告について

自作プログラムや信頼できる入手先からダウンロードしたプログラムを実行しようとすると、Windows 8 以降ではPC保護の警告がでます。

最近は悪質なマルウェアやインターネットサイトがあるので細心の注意は必要ですが、汚染されていない自身のあるクリーンなPCで自分で作ったプログラムで、ほぼ確実にこの警告がでます。さらにセキュリティーソフトが追いうちをかけて、警告を出します。

対策については、こちらをご覧ください。

自作プログラムがPC保護警告に引っかかる



最新の MyClock

初めてC#で作るプログラムの最新の MyClock は C#学習を反映しています。ここに至る道筋を簡単に記事にします。さらに自分なりのプログラミングTipsも紹介する予定です。

==========

邪魔にならないデジタル時計 (アラーム機能付き)
MyClock Ver 1.17.5  [更新 2017/02/22]
最新版 (ソース付き) Ver 1.17.5 のダウンロード
  • アラーム機能があります。
  • 時計の外観をカスタマイズできます。
  • ポータブルアプリです(フォルダにコピーするだけで使え、不要になればフォルダごと削除するだけです)。
動作に必要な最小限のファイル:
  • MyClock.exe
  • scClock.exe
一応 ReadMe.txt も入っています。

<MyClock>フォルダにソースファイルが入っています。MyClock.sln を実行するとVisual Studio で読み込んで起動します。Visual Studio Community 2015 で作ったものです。


シンプルなものから最新までの道筋

多分最も簡単に作れる時計アプリ

Ver1.00外観 

手始めに、前面表示する半透明でフォントの大きなのデジタル時計を作りました。
タイマーコントロール、フォームのプロパティ設定だけでできます。とは言っても初めてC#で作ったので、主にIDEの使い方やC#が自動生成するコードについて調べてみました。


クライアント領域のマウス操作、プロセスの排他処理

キャプションバーと枠を取り去ったデジタル時計に改造しました。そのためには、クライアント領域のマウス操作が不可欠になります。そこで、C#でマウスのイベントハンドラを使ってみました。

こんな感じになりました。
枠無し黄色半透明フォーム
 

アプリ用のアイコンリソースの使い方も試しました。さらに二重起動禁止にするため、mutex を使ったプロセスの排他処理を C#で試してみました。VC++の感覚で扱えることが分かりました。


キー入力の取得とモーダルダイアログ

[Esc]キーを取得してモーダルダイアログを表示させる処理を作ってみました。

アプリの機能としては、こんな感じのフォームでアラームの設定を行います。
アラーム設定画面 

私の Windows 10 環境だと標準のフォントサイズが 9pt になっていますが、そもそも大きな文字の時計を作るコンセプトなので、12pt を基本のフォントサイズにしました。

過去の VC++ でも使ったことの無い DateTimeコントロールを初めて使ってみました。他には、ボタン操作やチェックボックスなどの練習もできました。クリックすると [▶前面] ⇒ [▶最大化] ⇒ [▶前面中央] と3フェーズを循環するボタンを実装。[OK]ボタンは[Enter]キーと連動、[Cancel]ボタンは[Esc]キーと連動させるのは、フォームのプロパテティの設定で実装できることも試しました。


Win32 APIの利用

アラームが発動した時、目立つように点滅させます。そこで、キャプションバーとボーダーフレームを点滅させるWin32 API の利用を試しました(.NET Framework にはウィンドウ点滅の機能が準備されていないようです)。

こんな感じで、点滅します。
アラーム発動時に、ウィンドウの最大化やスクリーン中央への移動などのオプションを作りました。

アラーム発動 


ピクチャーボックとテキストボックス、アセンブリ情報の活用

ピクチャーボックスにアイコンを表示し、テキストボックスにクイックマニュアルを表示するのを試してしました。

こんな感じのアプリ情報のダイアログを作り、[F1]キーを押して呼び出すようにしました。

Aboutダイアログ_ボタンなし 

ここでも 標準の9pt よりも大きなフォントで表示しています。
さらに、アプリに埋め込まれるバージョンとかアプリ名などのアセンブリ情報の取得も試みました。
アセンブリ情報を利用は初めてで、ここで表示している「アプリの説明」、「アプリ名 (MyClock)」、「バージョン」、「Copyright表示」は全てアセンブリ情報から取得して表示。バージョンアップ時にアセンブリ情報を変更するだけで良く、フォームの変更は不要です。


外部アプリを起動してみる

外部アプリとして、以前作った scClock (小さな時計) を起動する処理を作ってみました。Win32 APIを使わずに .NET Framework と C# だけで起動しているプロセスの列挙、プロセスの終了、例外処理ができました。


モードレスダイアログとプロパティグリッド

時計の外観をカスタマイズする機能を追加しました。外観の設定をリアルタイムに反映させるために、モードレスダイアログとプロパティグリッドの組み合わせが良さそうです。

プロパティグリッドは初めて使ってみましたが、非常に便利なものですね!
これを使うのは、C#らしいクラスの使い方を理解する良い題材になりました。基本的な使い方が分かれば、細かなユーザーインターフェースをコーディングする必要がありません。

今回作った時計は、その外観に "通常の外観"と"アラーム設定時の外観"の2セットあります。そこで、プロパティグリッドに表示するプロパティもそれぞれに併せて2セット用意します。2セットの外観と2つのプロパティセットを動的に連動させました。

さらに、プロパティグリッドの上にある外観変更ボタン (下の図では [通常の外観]ボタン) で2セットの外観を強制的に変更し、プロパティグリッドの表示をこれに連動させました。

このように、異なるクラスのフォーム間で互いのフォームの表示を双方向で制御するC#のコーディングが試せました。

通常の外観のカスタマイズは、こんな感じ...
通常 

アラーム設定時の外観のカスタマイズは、こんな感じ...
アラーム設定時 

極端に小さくして scClock のような外観にもできます。
 小さな外観 


読者の方からのコメントでヒントを頂き、MyClock にキャプションバーに常に貼り付く機能を選べるようにしました。
外観の設定の画面に追加したボタンを押すことで、貼り付く / 貼り付かないを選択できます。

通常の外観をこんな感じにして、キャプションバーに貼り付いたところ...
貼り付き-通常


アラーム設定時の外観は、こんな感じにしてみます。
貼り付き-アラーム設定時

作ってみたら、良い機能だと気がつきました( ^^;

初めてC#を使って作ってきたアプリですが、かなり満足できる仕上がりになってきたと思います。



C#学習の履歴を以下にまとめます。

フォームを作り時刻を表示させる (Ver 0.10)

仕 様
  • フォントが大きい
  • 半透明で常に前面表示
試したこと
  • Visual Studio IDE の使い方と基本的な機能
 MyClock Ver 0.10 のページ



クライアント領域のマウス操作でアプリの終了と移動を行う (Ver 1.00)

更新履歴

 ・タイトルバーの無い小さな(邪魔にならない)外観に変更
 ・クライアント領域を左ダブルクリックで終了可能にする
 ・クライアント領域をマウスで掴んで移動可能にする
 ・マウス右クリックで最小化できるようにする

試したこと
  • イベントハンドラの作成と フォームデザイナーの挙動

 MyClock Ver 1.00 のページ



モーダルダイアログで設定し親ウィンドウを制御する

更新履歴

 ・アラーム機能を追加
  - [Esc]キーでアラーム設定
  - アラーム発動時マウスを左クリックで元に戻る

 MyClock Ver 1.10 のページ



MyClock Ver 1.11 にアップデート

更新履歴

 ・アラーム設置柄画面を時計の周りに重ならずに表示
 ・アラーム設定画面で、現在時刻をがが取得可能にした
 ・最小化からのアラーム発動では半透明最大化させる
 ・最前面に表示しないことがあったのを修正
 ・Alarm.exe 単独起動のエラーの場合メッセージを表示して終了。

 MyClock Ver 1.11 のページ


MyClock Ver 1.12 にアップデート

更新履歴

 ・以下を保存して再起動時に復元するようにした
  - アラーム設定時刻
  - アラーム解除設定状態
  - 時計の表示位置


 MyClock Ver 1.12 のページ


MyClock Ver 1.13 にアップデート

更新履歴

 ・終了時に補村して再起動時に復元する項目を追加
  - 終了時の時計のサイズ(ノーマル/最小化)
 
 MyClock Ver 1.13 のページ


MyClock Ver 1.14 にアップデート

更新履歴
 ・時計の表示状態ごとにアラーム発動時の外観を選択できます。
  - 時計の表示状態:前面表示 / 最小化
  - アラーム発動時の外観:前面表示 / 最大化
 ・アラーム発動時の外観設定を終了時に保存し再起動時に復元する。
 ・MyClock.exe から呼び出されず単独起動の場合の例外処理を追加。

 MyClock Ver 1.14 のページ


MyClock Ver 1.15 にアップデート

更新履歴

  2017/02/04 ・アラーム設定に「▶前面中央」を追加した。
        ・起動時に「MyClock の使い方」の表示ができるようにした。
         - 起動時の表示をするかどうかを設定できる





応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio プログラム電卓の価格動向

更新: 2017/02/14

新世代 Casio Basic 搭載機の価格動向をチェックしてゆきます。
プログラム電卓の後継機種登場が待ち遠しいのですが、価格動向から何か手がかりが得られないかと思って、定期的にチェックしています。

なお、カシオの関数電卓の商品構成と、調査対象は下記の通り;
 ・ スタンダード関数電卓: プログラミング機能が無いので、調査対象外です。
 ・ プログラム関数電卓: fx-5800P のみを調査対象とします。
    fx-72F のプログラム機能は古い世代で、極めて低機能なので対象外とします。
 ・グラフ関数電卓: fx-9860GII、fx-CG10 PRISM、fx-CG20 は新生代Casio Basic搭載機で、調査対象です。
 ・土木測量専業電卓: fx-FD10 Pro が対象です。新世代Casio Basic を搭載しています。


Amazon最安値 (各機種ごと新品の最安値を赤色表示最高値を青色表示)
製 品fx-5800Pfx-9860GII
並行輸入品
fx-9860GIIPRIZM
fx-CG10
並行輸入品
fx-CG20fx-FD10 Pro
2015
01/15¥6,117    ¥8,280    ¥19,800    ¥15,400    ¥22,530    ¥19,623    
01/20¥6,114 ¥8,400 ¥19,800    ¥15,400    ¥22,530    ¥18,920
01/23¥6,009 ¥8,200 ¥19,800    ¥15,400    ¥22,530    ¥18,578
01/25¥6,114 ¥8,200    ¥19,800    ¥15,400    ¥22,530    ¥18,060
01/28¥6,114    ¥8,200    ¥19,800    ¥15,400    ¥22,530    ¥17,288
01/29¥6,114    ¥8,200    ¥19,800    ¥15,800    ¥22,530    ¥17,131
01/31¥6,114    ¥8,200    ¥19,800    ¥15,400 ¥22,530    ¥16,963
02/05¥6,114    ¥8,280 ¥19,800    ¥15,400    ¥22,530    ¥17,135
02/06¥6,114    ¥8,280    ¥19,800    ¥15,400    ¥22,530    ¥16,969
02/07¥6,114    ¥8,200¥19,800    ¥15,400    ¥22,530    ¥17,135
02/08¥6,114    ¥8,280 ¥19,800    ¥15,400    ¥22,530    ¥16,969
02/11¥6,114    ¥8,280    ¥19,800    ¥15,400    ¥19,146    ¥16,969    
02/12¥7,190 ¥8,380 ¥19,800    ¥15,400    ¥22,530 ¥23,000
02/18¥7,190    ¥8,380    ¥19,166 ¥15,350 ¥22,530    ¥22,505
02/23¥6,114 ¥8,400 ¥19,166    ¥15,400 ¥22,530    ¥21,492
03/08¥7,020 ¥8,400    ¥19,164 ¥15,280 ¥22,530    ¥19,944
03/15¥7,009 ¥10,000 ¥16,262 ¥15,280    ¥22,530    ¥19,071
03/21¥6,979 ¥10,150 ¥16,262    ¥15,280    ¥22,500 ¥17,935
03/25¥6,744 ¥10,150    ¥16,262    ¥15,280    ¥22,530 ¥17,445
03/30¥6,800 ¥10,122 ¥16,262    ¥15,350 ¥22,530    ¥17,130
04/06¥6,507 ¥10,122    ¥16,262    ¥15,350    ¥19,150 ¥16,966
05/01¥6,508 ¥11,000 ¥16,262    ¥15,280 ¥19,150    ¥17,135
05/13¥6,508    ¥9,800 ¥16,262    ¥15,280    ¥19,150    ¥17,135    
06/06¥6,507 ¥11,000 ¥19,166 ¥15,400 ¥19,150    ¥17,135    
06/11¥6,508 ¥11,000    ¥19,166    ¥17,000 ¥19,150    ¥16,979
06/14¥6,508    ¥11,000    ¥19,166    ¥17,000    ¥19,150    ¥17,135
06/24¥6,508    ¥11,000    ¥19,166    ¥17,000    ¥19,150    ¥16,944
06/27¥6,250 ¥12,100 ¥19,166    ¥15,480 ¥19,150    ¥16,979
06/28¥6,258 ¥12,100    ¥19,166    ¥17,000 ¥19,150    ¥17,100
07/07¥6,508 ¥12,100    ¥19,166    ¥17,000    ¥19,150    ¥17,100    
07/16¥6,508    ¥12,500 ¥19,166    ¥17,000    ¥19,150    ¥16,800
07/17¥6,508    ¥12,500    ¥19,166    ¥17,000    ¥19,150    ¥17,135
07/24¥6,508    ¥12,500    ¥19,166    ¥15,800 ¥19,150    ¥16,800
07/30¥6,100 ¥12,500    ¥19,166    ¥15,800    ¥19,150    ¥16,969
08/03¥6,480 ¥12,500    ¥19,166    ¥15,800    ¥19,150    ¥16,969    
08/09¥5,940 ¥12,500    ¥19,800 ¥15,200 ¥19,148 ¥16,979
08/17¥6,181
¥12,500    ¥19,800    ¥15,000 ¥19,148    ¥17,135
09/20¥5,878 ¥9,800 ¥19,800    ¥18,000 ¥19,148    ¥16,964
10/03¥6,181 ¥9,800    ¥19,800    ¥18,000    ¥19,148    ¥16,964    
10/10¥6.181    ¥13,380 ¥19,800    ¥18,000    ¥19,148    ¥16,970
10/11¥6,181    ¥13,380    ¥19,800    ¥18,000     ¥19,148    ¥16,969
10/30¥5,993 ¥13,000 ¥19,800    ¥18,000     ¥19,148    ¥16,970
11/14¥6,181 ¥13,000    ¥19,800    ¥18,000    ¥19,148     ¥16,970    
12/09¥6,174 ¥12,980 ¥19,800    ¥17,980 ¥18,548 ¥16,966
12/11¥6,165 ¥12,980    ¥19,800    ¥17,980    ¥18,548    ¥16,966    
12/18¥6,154 ¥12,980    ¥19,800    ¥17,980    ¥18,548    ¥16,955
2016
01/02¥6,135 ¥12,800 ¥19,800    ¥18,000 ¥19,148 ¥16,937
01/11¥6,135    ¥12,730 ¥19,800    ¥18,000    ¥19,148    ¥16,660
02/01¥6,079 ¥12,058 ¥19,800    ¥18,000    ¥19,148    ¥16,660    
02/21¥6,080 ¥11,910 ¥12,500 ¥18,000    ¥19,148    ¥16,815
02/27¥6,030 ¥11,780 ¥12,500    ¥18,000    ¥19,148    ¥16,815    
03/19¥6,080 ¥11,580 ¥19,800 ¥18,000    ¥19,148    ¥16,815    
03/27¥5,807 ¥11,580¥19,800    ¥18,000    ¥19,150 ¥16,201
04/09¥6,080 ¥14,200 ¥19,800    ¥18,000    ¥19,150    ¥16,815
04/20¥6,080    ¥12,420 ¥19,800    ¥16,853 ¥19,150    ¥16,815    
04/23¥7,139 ¥13,040 ¥19,800    ¥16,853    ¥19,150    ¥16,815    
04/26¥7,259 ¥12,980 ¥19,800    ¥16,853    ¥19,150    ¥16,201
04/27¥7,259    ¥13,000 ¥19,800    ¥16,800 ¥19,150    ¥16,815
05/02¥7,000 ¥11,580 ¥19,800    ¥16,800    ¥19,150    ¥16,185    
05/07¥6,995 ¥11,580    ¥19,800    ¥16,000 ¥19,150    ¥16,817
05/13¥6,847 ¥11,580    ¥19,800    ¥15,980 ¥19,150    ¥16,817    
05/14¥6,747 ¥11,580    ¥19,800    ¥15,900 ¥19,150    ¥16,815
05/18¥6,747    ¥11,280 ¥19,800    ¥15,800 ¥19,150    ¥16,815    
05/29¥6,670 ¥11,200 ¥19,800    ¥15,800    ¥19,150    ¥16,815    
06/04¥6,677 ¥11,190 ¥19,800    ¥15,800    ¥19,150    ¥16,815    
06/12¥6,666 ¥11,170 ¥19,800    ¥15,700 ¥19,150    ¥16,815    
06/25¥6,646 ¥10,976 ¥19,800    ¥16,990 ¥19,150    ¥16,817
07/12¥6,600 ¥10,720 ¥19,800    ¥15,980 ¥19,150    ¥16,817    
07/30¥6,540 ¥10,720    ¥19,800    ¥14,800 ¥19,150    ¥16,817    
08/12¥6,642 ¥10,720    ¥19,800    ¥14,000 ¥18,580 ¥16,817    
08/21¥5,980 ¥10,720    ¥19,799 ¥16,898 ¥18,580    ¥16,817    
10/07¥6,607 ¥10,720    ¥19,599 ¥16,000 ¥18,580    ¥16,817    
10/09¥6,650 ¥10,500 ¥19,598 ¥16,000    ¥18,580    ¥16,817    
10/19¥6,650    ¥9,750 ¥19,593 ¥16,340 ¥18,580    ¥16,817    
11/01¥6,606 ¥9,720 ¥19,570 ¥17,464 ¥18,580    ¥16,800
11/02¥6,606    ¥9,712 ¥19,570    ¥16,778 ¥18,580    ¥16,800    
11/11¥6,606    ¥7,980 ¥19,800 ¥17,200 ¥18,580    ¥16,800    
11/16¥6,606    ¥7,880¥19,800    ¥17,200    ¥18,580    ¥16,800    
11/29¥6,580 ¥7,650¥17,880 ¥17,190 ¥18,580    ¥16,650
12/03¥6,585 ¥7,650    ¥17,880    ¥16,986 ¥18,580    ¥16,649
12/12¥6,315 ¥7,570 ¥17,890 ¥16,986    ¥18,580    ¥16,650
12/16¥6,313 ¥7,570    ¥19,800 ¥17,200 ¥18,580    ¥16,650    
12/18¥6,310 ¥7,570    ¥19,800    ¥17,200    ¥18,580    ¥16,650     
12/21¥5,780 ¥7,570    該当なし¥17,200    ¥18,580    ¥16,650    
12/28¥5,780    ¥7,570    該当なし¥17,200    ¥18,580    ¥16,650    
2017
01/01¥5,780    ¥7,570    該当なし¥17,200    ¥17,978 ↓¥16,201
01/03¥5,780    ¥7,570    該当なし¥17,200    ¥17,978    ¥16,101 ↓
01/07¥5,780    ¥8,180 該当なし¥17,050 ¥18,580 ¥16,101    
01/09¥5,780    ¥8,180    該当なし¥17,200 ¥18,580    ¥16,101    
01/16¥5,580 ¥8,180    該当なし¥17,200    ¥18,580    ¥16,101    
01/24¥5,580    ¥8,180    ¥19,800    ¥18,899 ¥17,978 ↓¥16,650
02/14¥6.650 ¥8,180    ¥19,800    ¥18,900 ¥17,978    ¥16,817
製品fx-5800Pfx-9860GII
並行輸入品
fx-9860GIIPRIZM
fx-CG10
並行輸入品
fx-CG20fx-FD10 Pro

楽天は、Amazonよりも安いことがありますが価格が日替わりで激しく変わります。特値の目玉を探すには良いかも知れません。Amazonは、最安値に近い上、価格の変動が激しくないので、基準として使っています。

なお、並行輸入品と付記していないものは、国内正規保証を受けられる製品の価格を記載しています。

※ 購入時のポイント
  • fx-5800P: 新品購入を勧める。カバーのヒンジが弱いので中古品は落下などによりヒンジにひびが入っている恐れあり。
  • fx-9860GII: 前期品と後期品があり、CPUにSH4Aを搭載している後期品を勧める。後期品は液晶部の下に USB POWER GRAPHIC 2 と印刷されている。前期品 (CPUはSH3) は末尾の 2 が無い。購入前に確認ができる方法での購入を勧める。
  • fx-CG20 と PRIZM fx-CG10: ハードウェアは同じ。新品購入を勧める。透明プラスチックで出来ている上部透明天板は傷が付きやすく、新品でも傷が付いていることがある。中古品は傷の程度がひどい可能性大。
  • fx-FD10 Pro: 使ったことが無いので、特にアドバイスできることが無い。

02/14
fx-5800P と fx-FD10 Pro が若干の値上げ。 

01/24
fx-5800P は最安値継続、fx-9860GIIは国内量販店が出品しているので国内正規版と思われ記録復帰。fx-CG20 は過去の最安値と同じ価格になった。fx-FD10 Pro は残念ながら¥16,000 を切らずに若干の値上げ。

01/16
fx-5800P が記録開始以来の最安値を記録。関東への配送料(¥515)を含めても(¥6,095)、2位のAmazon販売価格よりも安い(この配送料については注意が必要)。これ以外は状況維持。

01/09
PRIZN fx-CG10並行輸入品が¥17,200 に戻った。他は変化なし。

01/07
fx-5800P とfx-FD10 Pro は最安値継続。fx-9860GII並行輸入品と fx-CG20 は最安値が途絶えた。

01/03
fx-FD10 Pro が最安値を更新した。それ以外の機種は前回と同じ。

01/01
fx-5800P、fx-9860GII並行高輸入品は最安値継続、fx-CG20、fx-FD10 Pro は値下げで最安値となった。


12/28
上記で、並行輸入品と記載していない場合は、国内で正規保証が受けられる製品との意味で価格のモニターと記録をしてきている。従って、fx-9860GII については、国内保証が得られる保証の無い製品のみが出品されていることから「該当なし」記載することにする。国内正規保証が受けられる製品が出展された時に価格の記録を再開する予定。
国内保証が受けられる保証のない「該当なし」から ¥24,000程度の高価格で買くらいなら、最安値 ¥7,570 の fx-9860GII並行輸入品を購入する方が良いと思うので、注意を喚起したい。
その他の機種は変化なく、最安値は継続している。

12/21
fx-5800P が記録開始以来の最安値(ショップ)で、関東への送料を含めても第2位のAmazon扱い(¥6,310)より¥20だけ安い。fx-9860GII並行輸入品は最安値を維持。一方 fx-9860GII は最高値を更新、だが1つ注意が必要だ。海外在庫品や並行輸入品と説明があるショップのものは国内保証が受けられないことが分かる。これについては、fx-9860GII並行輸入品の現在最安値である ¥7,570 がお得だ。一方で国内正規品の在庫かそうでないかが不明なショップのものは注意が必要。確認が可能なら国内保証を受けられるかどうか問い合わせをすべきで、国内保証が受けられるのなら高値でも意味がある。保証が受けられないなら並行輸入品を ¥7,750 で購入すべきだろう。

12/18
fx-5800P のAmazon直送が値下げ、当面もの価格で維持の可能性大。fx-9860GII並行輸入品と fx-CG20正規品が最安値維持。

12/16
fx-9860GII並行輸入品と fx-CG20正規品が最安値維持。買うならチャンスだろう。

12/12
fx-9860GII並行輸入品が最安値更新。fx-CG20が4ヶ月間差安値維持。

12/03
fx-9860GII 並行輸入品と fx-CG20 の最安値継続中。

11/29
fx-9860GII 並行輸入品の価格低下が続いている。軒並み低価格化。fx-CG20 は最安値更新中。

11/16
fx-9860GII 並行輸入品が、最安値をさらに更新中

11/11
fx-9860GII 並行輸入品が最安値を記録!買うなら今がチャンスだが、国内での保証が受けられない可能性は受け入れる必要あり。恐らく CPU に SH3 を搭載した古いモデルの可能性は少ないだろうが、その可能性もゼロではない点に留意する必要がありそう。

11/02
fx-CG10並行輸入品が1万6千円台に戻った。fx-9860GII 並行輸入品は緩やかな値下げが継続している。

11/01
fx-CG10並行輸入品は徐々に値上げ。fx-CG20は最安値を維持。それ以外は僅かに値下げ。これから値下げが続くのか興味がある。

10/19
fx-9860GII 並行輸入品が久しぶりに1万円を切っているが、ショップの在庫が切れるまでの一時的なものだろう。

10/09
fx-5800P が徐々に上がっている。一方でfx-9860GII は並行輸入品、正規版ともに下がってきている。

10/07
fx-CG20 の最安値が継続している。fx-9860GII が僅かに下がり、fx-5800P は一時¥6,000 を切るものの、¥6,600あたりで落ち着いている。

08/21
fx-5800P が6千円を切った(一時的と思われるが...)。PRIZM fx-CG10並行輸入品は大幅に上がった。前回調査の最安値は買い時であった。

08/12
fx-5800P の価格低下が止まった(少し上昇)。一方で、fx-CG10並行輸入品と fx-CG20 は最安値になった。

07/30
fx-5800P は依然としてゆっくりと値下げが続いている。

07/12
fx-5800P と fx-9860GII並行輸入品が、引き続きゆっくりと値下げが続いている。

06/24
fx-5800P、fx-9860GII並行輸入品が引き続き値下げ傾向継続中。

06/12
fx-5800P、fx-9860GII並行輸入品、fx-CG10並行輸入品 が少し値下げ。

06/04
fx-9860GII並行輸入品がじっくりと下がってきている。fx-5800Pについてはさらに下がるか楽しみだ。

05/29
fx-5800P と fx-9860GII並行輸入版 が少し値下げ。この1ヶ月間 fx-5800P がゆっくりであるが値下げが続いている。

05/18
fx-9860GII並行輸入品とPRIZM fx-CG10並行輸入品が少し値下げ。

05/14
fx-5800P がゆっくりと確実に下がってきている。

05/13
fx-5800P が徐々に値下がり。

05/07
fx-5800P が最近の最高値から徐々に下げ続け、¥6,000 台に戻ってきた。

05/02
fx-5800P が下がり始めたが、以前高値。fx-9860GII 並行輸入品も下がっている。

04/27
fx-5800Pが乱高下傾向なので気になったが変化なし。fx-FD10 Proが瞬間的に最安値を見せたが、従来の価格に戻った。

04/26
fx-5800P が¥7,000円台でさらに上がって、記録開始依頼の最高値を更新した。これが¥7,000円台であるのが、そもそも珍しいくらいの高値傾向だ。やはり新年度需要が落ち着いて、一時的に流通量が減っているためだろうか?一方で fx-FD10 Pro は最安値になった。

04/23
fx-5800P と fx-9860GII 並行輸入品が千円単位で上がった。新年度で売れて在庫が減ったことが影響しているのか?

04/20
全体的に大きな変化は見られない。fx-9860GII と PRIZM fx-CG10 の共に並行輸入品が安いが在庫がなくなれば終わりのパターンだろう。

04/09
先月末は、新年度向けのバーゲンセールだったようで、一律元の価格に戻っている。

03/27
fx-5800P と fx-FD10 Pro の2機種が、記録を取り始めて依頼の最安値となっている。いずれもショップではなくて Amazon 本体での価格だからしばらくこの価格が継続する可能性がある。

03/19
fx-9860GII 並行輸入品がゆっくりと値下げを続けている一方で、fx-9860GII 国内正規品は一時の安売りショップの在庫が無くなって元の価格に戻っている。その他はほぼ変化なし。

02/27
fx-5800P が若干安くなっている。fx-9860GII の最安値は継続中(在庫が残り1点と表示されている)。但し、SH4A搭載機かどうかの確認は必要でしょう。

02/21
fx-9860GII が大幅安値となった。送料別だが確実に安く、記録開始後の最安値。国内正規品なので買うならチャンスだと思う。
[追記] fx-9860GII はマイナーバージョンが2つあり、CPUにSH3を使った初期バージョン(液晶ディスプレイの下にUSB GRAPHICと記載)とSH4Aを使った現行バージョン(液晶ディスプレイの下に USB GRAPHIC 2 と記載)がある。在庫処分のために SH3バージョンを格安にしている可能性はあるので注意が必要かも知れない。なお、何もしなければ SH3バージョンの方が処理が速いが、オーバークロックアドインにより最高速を得るには SH4A の方が遙かに速くなる。個人的にはSH4Aバージョンを勧める。

02/01
fx-5800P と fx-9860GII 並行輸入品 が下がり、fx-FD10 Pro は最安値継続中。なお、fx-5800Pは価格.comで先週から ¥5,400 となっている((有)マルカツの数量限定スポット販売)が、送料別となっているので要確認(結果的にアマゾンが安い可能性大)。

01/11
fx-FD10 Pro が記録を取り始めて以来の最安値となった。他は大きな変化なし。

01/02
通常の変動内に収まっている。fx-5800P と fx-9860GII 平行輸入版 が若干値下げ。


12/18
価格の大きな変化はなく、通常の変動範囲内。これまで春の進入学・異動のシーズン前に安値が付く傾向があるので、それに期待したい。

12/11
fx-5800P が少し下がった。他は変化無し。

12/09
全体的に少し値下げ傾向が出てきた。年末商戦開始か?但し、送料や返品ポリシーについては要注意。fx-CG20 は安くなっているが、本体価格は¥17,980 で、関東の配送料が¥648 なので合計 ¥18,548 と記載した。これまでより¥6,000安くなっている。これまでも関東圏での送料込みで最安値を選んでいる。

11/14

しばらく価格が動かなかった。fx-5800P は 6000円を境に10円以内で行きつ戻りつ。最安値5993円の在庫が無くなったのだろう、Amazon直販の 6181 円が最安値となった。ほかの機種は全く動かない。

10/30
fx-5800P が下って5千円台になった。fx-9860GII 並行輸入品が少し値下げ。これから年末にかけて全体的な安値になると思われる。

10/11
fx-FD10 Pro が Amazon で1円下がる。他は変化なし。

10/10
fx-9860GII 平衡輸入品が記録開始以来最高値となりました。それ以外はほぼ変化なし。

10/03
fx-5800P は5千円台の最安値から¥6,181 へ戻った。他は変化が見られず落ち着いている。

09/20
ここしばらく、fx-5800P が5千円台を維持していて、記録開始以来最安値になっている。買うなら今がチャンスだと思う。fx-9860GII 並行輸入品も9千円台になり、保証を気にしなければ購入の良い機会。

08/17
fx-5800P が安値傾向維持、¥6,000に近いところでの変動。fx-CG10 並行輸入品が記録開始以来の最安値となりました。fx-FD10 Pro は¥17,000 回りでの変動が継続中。

08/09
fx-5800P と PRIZM fx-CG10 並行輸入品 が記録を始めて以来の最安値となりました。これらは、おそらく少量在庫で売切御免のショップ販売のパターンで、劇的安値というものではありません。欲しければ即ポチッが良いでしょうが、慌てることもなさそう。特に、fx-5800P は、よく見ると関東配送料¥540なので総額¥6480、つまりこれまで継続しているAmazon直販の¥6,508 とさほど変わらないところにカラクリがあります。

08/03
fx-5800P の安値は限定在庫がなくなって、最近のレベルへ戻った。とは言っても少し安いレベル。他の機種では動きなし。

07/30
fx-5800P が大きく値下げ。記録開始後最安値は¥6,009 (瞬間風速) より1円高いだけ。しばらく安定した最安値が¥6,114 でしたが、それよりも安くなっています。ショップの在庫限りの瞬間風速かもしれず、スグに元に戻る可能性はあります。買うなら今かも知れません。それ以外は変化なし。fx-F110 Pro は小さな範囲での変動が続いています。

    

07/24
fx-FD10 Pro が記録を採り始めて以来の最安値に戻りました。ショップの在庫が入ったようです。fx-CG10 並行輸入品も、一気に値下げ、同様②ショップの在庫が入った模様です。正規国内品との値差¥3,300 程度を、正規保証無しと天秤にかけてどう考えるか悩ましいところです。

07/17
fx-FD10 Pro は、¥16,800 で出品していたショップの在庫が無くなり、また¥17,135に戻ったわけですが、これは Amazonの価格。今後も安い在庫を持ったショップが現れればチャンスとなることが、しばらく繰り返されると思われます。但し、記録を付け始めてからの傾向としては、安値傾向は続いています。

07/16
fx-FD10 Pro がここのところ¥17,000 を切っていて、当ブログでの記録開始以来最安値となっています。fx-CG20/10 については、国内正規品と並行輸入品が¥2,000程度の値差がしばらく続いており、この程度の差ならば、万一の故障の際の保証を考えると、国内正規品を購入するほうが得策かも知れません。

07/07
fx-5800P が戻りました。一時的な安値だったようです。他は動きなし。

06/28
PRIZM fx-CG10 が戻りました。突風だったようです。fx-5800P は少し上がっていますが、¥6,200円台を維持。この特定のショップの在庫限りの話しなのかも知れません。

06/27
PRIZM fx-CG10 が一気に値下がり、記録を付け始めて以来2番目の安値です。fx-5800P は徐々に下がってきています。fx-9860GII 並行輸入品が また上がり初めています。

06/24
fx-FD10 Pro が、¥17,000 を切り、記録以来最安値をつけました。単なる突風が吹いただけか、値下げ傾向が継続するのか注目したいと思います。

06/14
fx-9860GII 並行輸入品、fxCG10 PRIZIM 並行輸入品、ともに高値止まりです。やはり為替の影響か?なお、fx-FD10 Pro は一瞬¥17,000をきるが、また戻る...の繰り返しで、また戻っています。

06/11
fx-CG10 PRISM 並行輸入品が、突如最高値を付け、2千円近い上昇です。長期間¥15,400あたりで落ち着いていました。一つ考えられる理由に、1ドル115円辺りから125円への変化が短時間に一気に進んだことです。並行輸入品は海外在庫からの発送が多いので、在庫が少なくなったfx-CG10から値上げし、いずれfx-9860GII 並行輸入品も一気に値上げ、ということもあり得ます。しばらく推移に注目です。fx-FD10 Pro は逆に過去2番目の安値になり¥17,000を切りました。工事受注数と国内在庫数の影響だろうとおもわれます。

06/06
前回から、大きな推移が無いのですが、1ヶ月近く経つので記録しておきます。fx-9860GII 並行輸入品は一旦¥9,000円台に入ったのですが、すぐに¥10,000 に戻っています。fx-9860GII 国内品価格は僅かですが下がっていて、記録を付け始めてからの最安値になっています。

05/13
fx-9860GII 並行輸入品が9000円台へ戻る。他は変化なし。

05/01
前回から大きな価格推移はなく、安定している。放置しているわけでは無いので、区切りの良い本日、更新しておく。

04/06
fx-FD10 Pro が過去の最安値にほぼ並んだ。fx-5800P はようやく 6,500円まで価格が戻ってきた。

03/30

大きな変化なし。4月の変化に期待。

03/25
fx-5800Pが少し値下がり、但し過去最安値には全く届かない。fx-9860GII は変化なし。並行輸入品が上がって正規国内品が下がると言う妙状況のまま。PRIZM fx-CG10 並行輸入品は最安値のまま維持。fx-FD10 Proはさらに少し値下げ。いずれの機種も国内正規品が値下げ傾向と言うのは、国内の在庫整理が進んでいるためか?新機種は何時でるのか楽しみでもあります。

03/21
変化がでてきた。fx-5800P が6千円台に戻ってきました。楽天では新品が5千円後半で出てます。一時期に比べて高値維持ですが、安い在庫が出てきたようですネ。fx-9860GII 並行輸入品は最高値をマーク。一方国内版は最安値をマーク。一体どうなっているんだろう?fx-CG10 並行輸入品はおおきく変わらないが最近は最安値継続。fx-FD10 Pro が一気に下がって1万7千円台へ。これからしばらく値下げ傾向になるのか?チョット注目です。

03/15
fx-5800P が少しづつ6千円台へ戻ろうとしています。一方で fx-9860GII 並行輸入品は一気に値上げ。PRIZM fx-cg10 並行輸入品がじわじわと下げて最安値。

03/08
fx-5800Pが7千円台に落ち着いています。fx-9860GII 並行入品も8千円台の出品が減る傾向が見られます。年度末から年度初めの需要期を迎えて、高値安定になろうとしているのかも知れません。fx-5800Pの再生品は¥5,980 を維持していますが、カバーのヒンジの不具合に関して再生品に不安があるので、手を出していません。

02/23
fx-5800Pが、ほぼ以前の水準 6千円台前半に戻った。ここのところの7千円台は何だったのか?

02/18

値上げのあと、特に大きな動きなし。

02/12

fx-5800P が¥7,000台に戻ってしまいました。メーカー再生品は¥5,980 です。fx-9860GII 並行輸入品も少し上がっています。fx-FD10 Proは調査開始後最高値。本日は、全体的に値上げ傾向が見られます。昨日までは一体何だったのでしょう?

02/11
fx-CG20 が一機に値下げ。カシオの仕切り値が下がったのならば、これはきっと何かあるが、どこかの在庫を買い叩いての放出品なら一過性。新しい動きかどうか、しばらく様子見。

02/08
fx-FD10 Pro は¥17,000前後で振動中。fx-9860GII 並行輸入品は ¥8,200 ←→ ¥8,280 で振動中。

02/07
fx-9860GII並行輸入品 が¥8,200へ戻る。このところ ¥8,200 と ¥8,280 を往復している。

02/06
fx-FD10 Proが再び¥16,969へ。¥17,000 を境に行ったり来たり。

02/05
fx-FD10 Pro の値下げが一旦ストップ。fx-9860GII並行輸入品は¥8,280で落ち着くのか?fx-5800Pは¥6,114で安定(メーカー再生品は¥5,980)。2/13に fx-JP900が発売されるが、それに伴い fx-5800P がどちらへ触れるのか興味のあるところ。

01/31
fx-FD10 Pro の値下げが続いており、前日(1/30)に¥16,000台に突入、本日も¥16,000台を維持。

01/29
fx-FD10 Proが値下げ更新。

01/28
fx-FD10 Pro が¥17,000 台に入っています。

01/25
fx-5800Pが ¥6,114 に戻りました。楽天では ¥5,981 のまま。fx-FD10 Pro がさらに下がりました。そろそろ fx-FD10 Proの並行輸入品が出てくるのだろうか?

01/23
fx-5800P、fx-9860GII 並行輸入品、fx-FD10 Pro が下がりました。楽天では¥5,981 がありました。fx-5800P はいよいよ¥5,000台突入!

01/20
fx-FD10 Proが下がりました。

01/15
fx-5800P と fx-9860GII並行輸入品が下がりました。fx-5800P は¥6,000を切る勢い。fx-9860GII 並行輸入品は¥8,000を切る勢いです。





応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ


   

 
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

C# で MyClock Ver 1.00 を作る

プログラム電卓のためのC#プログラミング
e-Gadget

<MyClock トップへ戻る>


2017/02/10

初めて作る C# プログラム - MyClock


今回は、前作の MyClock Ver 0.10 を元にして、フォームのキャプションバーと枠が無い、よりシンプルでスクリーン上で邪魔にならないデジタル時計を作ります。これを Ver 1.00 とします。



MyClock Ver 1.00 の目標仕様

「邪魔にならないデジタル時計」にするために、

MyCLock4 

こんな感じにしてみます。なお前回で既に半透明、最前面表示にしています。

追加の目標仕様
  1. クライアント領域だけの外観に変更
  2. クライアント領域を左ダブルクリックで終了可能にする
  3. クライアント領域をマウスで掴んで移動可能にする
  4. マウス右クリックで最小化できるようにする
前回作ったのは、

 MyClock2  MyClock 

こんな外観ですが、
  • プログラムを終了するには、右上の [X] ボタンを押すしかありません
  • 時計を移動するには、キャプションバー (タイトルバー) をマウスで掴んで動かす必要があります。
ここでキャプションバーを無くすと、プログラムの終了とフォームの移動ができなくなるので問題です。

さて、フォーム(ウィンドウ)のタイトルバーとウィンドウ枠以外の部分をクライアント領域といいます。キャプションバーを無くして残るクライアント領域だけを使って、マウス操作でプログラムの終了と移動ができるようにするのが、今回の主なテーマです。



1. プログラムアップデートの準備

簡単なバージョン管理方法

確実に動作することが分かっている前作のソースコードを直接変更すると、何か原因不明のバグがあった時に、元に戻すのに苦労しそうです。バージョン管理が必要です。Visual Studio COmmunity 2015 では、ソースコードのバージョン管理のために Git を使えるようになっています。Git については、ネット検索すると分かると思うので、ここでは触れません。

ご自分のバージョン管理の方法があれば、それが一番良いと思います。

ここでは、PC内とホームページ用サーバーの両方にバックアップを残して、こまめにバージョン管理を行う私の方法を紹介します。


前作では、以下のフォルダ構造にしてから、新規にプロジェクトを作りました。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ

プロジェクトの作成が終わると、プロジェクト名のフォルダ (作業フォルダ) が追加されて、次のようになりました。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ
   <MyClock> ← 追加された作業フォルダ

そこで、今回は バージョンが分かるフォルダが並列になるように手で追加して、次のようなフォルダ構造にします。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ
  <MyClock1000> ← 今回新たに作るフォルダ

MyClock1000 フォルダを上のように新たに作り
MyClock0100 の中身を全て新たに作った MyClock1000 フォルダに丸ごとコピーします。

 <MyClock>
  <MyClock0100>
  <MyCLock1000>
   
<MyClock> ← これ以下は丸ごとコピーしたもの
    ・
    ・
    ・

念のためのバックアップも作ります。前回使った MyClock0100 フォルダを丸ごと圧縮して MyClock0100.zip を作ります。その上で今バックアップした MyClock0100 フォルダを削除して、MyClock1000 フォルダだけにしておきます。

このような方法で、バージョンを小分けにして管理&バックアップしておくと、何かあっても1つ前のバージョンに簡単に戻って仕切り直しができます。実はこれで何度も救われました!

最終的なフォルダ構造は、こんな感じです。

 <MyClock>
  MyClock0100.zip
  <MyClock1000> ← 今回新たに作ったォルダ
   <MyClock> ← 今回の作業フォルダ
    MyClock.sln
    <MyClock>
    <obj>
    <bin>

これで、準備完了!

MyClock.sln を起動すれば、開発環境が立ち上がります。

<原始的なクラウドバックアップ>
配布ファイルと称して、上の作業フォルダとは少し構成を変えたフォルダを準備し、フォルダごとzipファイルにしたものを業者のホームページサーバーにバックアップをしています。これで、自分のPCが不調になっても大丈夫です。


 先ずはリビルドしてみる

メニューバーの下に「Debug」「Any CPU」とあり、この状態で、メニューで、[ビルド(B)] - [ソリューションのリビルド(R)] を選び、ビルドを実行します。すると、出力ウィンドウで

1>------ ビルド開始: プロジェクト:MyClock, 構成:Debug Any CPU ------

と表示され、その後すぐに

1>------ ビルド開始: プロジェクト:MyCloxk, 構成:Debug Any CPU ------
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\MyClock\MyClock\bin\Debug\MyClock.exe

と1行追加表示されます。デバッグモードでビルドした実行ファイル名とパスが表示されます。

ここで、
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\
は、新たに追加したフォルダで、

その下の MyClock フォルダがソリューション MyClock のフォルダ、
さらにその下にある 同じ名前の MyClock フォルダが プロジェクト MyClock のフォルダです。

そして、実行ファイル MyClock.exe は プロジェクトフォルダの下の bin\Debug フォルダに作成されていることが分かります。リリースモードでビルドすると、bin\Release フォルダ内にファイルが出力されます。

ビルドが終わると、出力は以下のようになります。

1>------ ビルド開始: プロジェクト:MyCloxk, 構成:Debug Any CPU ------
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\MyClock\MyClock\bin\Debug\MyCloxk.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========


1 正常終了 となっているのでビルドエラーが無かったことが分かります。


デバッグモードで実行してみる

前回述べたようにデバッグモードで実行するための複数の方法から [F5] キーを押すだけが楽です。
問題ないことが確認できればOKです。



2. クライアント領域のマウス操作だけで、アプリの終了とフォームの移動を行う

クライアント領域のダブルクリックでプログラムを終了させる

方針

ダブルクリックのイベントを捕らえ、そのイベントハンドラに終了処理を書けば良いので、簡単そうです。

MyClock2 

MyClock の場合は、ラベル currentTime がクライアント領域全体を覆っています。従ってダブルクリックのイベントはラベル currentTime が捕らえるようにします。

手でコーディングしても良いですが、イベントハンドラのテンプレートを作るのは IDE で自動化するのが楽です。VC++の経験があれば自動作成のやり方は分かるので、先ずはこれで作ってから、出来たコードを眺めると良い勉強になります。


イベントハンドラの半自動作成

ソリューションエクスプローラーで、Display.cs をダブルクリックするとフォームデザイナーが現れます。ここで右の方を見ると、プロパティが示されています。

フォームのキャプションバー (タイトルバー) あたりをクリックすると Display フォームのプロパティlが表示されます。
時計の時間表示あたり、つまりラベルコントロールをクリックすると currentTime ラベルのプロパティが表示されます。

currentTime ラベルのプロパティ画面で、イナズマの形をしたツールボタンを押すとイベントの一覧が現れます。
アクション の下に DoubleClock があるのでこれをダブルクリックすると、currentTime ラベルをダブるクリックした時のイベントハンドラのテンプレートが自動作成され、作成されたコードが表示されます。

ダブルクリックのイベントハンドラ1

ここに、プログラムの終了コマンドを書き込めばOK。

終了させるコマンドはいくつもありますが、取り敢えず Dispose(); とします。1行書くだけでイベントハンドラの実装は終わりです。

ダブルクリックのイベントハンドラ2 


イベントハンドラの定義

ここで、ソリューションエクスプローラーで、Display.cs の左にある小さな ▷ をクリックすると下に展開して、Display.Designer.cs が出てくるので、これをダブルクリックしてファイルを眺めてみます。

「Windows フォームデザイナーで作成されたコード」の左にある小さな [+] ボタンをクリックして展開します。

フォームデザイナで追加されたコード

反転した1行が自動的に追加された記述で、イベントハンドラを定義しています。この行を手で削除すると フォームデザイナーが正常に開けなくなるので、ここは触らないのが無難です。

デバッグモードになっていることを確認し、

デバッグビルド 

[F5] を押して、実行します。クライアント領域 (時刻表示のラベル currentTime の上) をダブルクリックして、正常に終了したらOKです。


クライアント領域をマウスで掴んで移動させる

 方針
  1. クライアント領域でマウスボタンが押されている状態のイベントを捕らえる
  2. マウスボタンが押されているイベントハンドラで、クリックしたのが左ボタンかどうかをチェックする
  3. マウスの移動をイベントハンドラで捕らえる
  4. マウス移動のイベントハンドラで、マウスの座標を取得する
  5. マウス移動のイベントハンドラで、取得した座標にフォームを移動させる
このようにして、プログラムを作ります。


 マウスが押されているイベントとマウス移動のイベントのハンドラ作成

クライアント領域のラベル (currentTime) をクリックし、プロパティ画面でイナズマ形のツールボタンを押すと、このラベルで受け取れるイベント一覧が現れます。

マウスイベント一覧  

マウスイベントの一覧を見ると、MouseDown イベントがあります。下に説明があります。補足すると、これはクリックのイベントではなく、マウスボタンが押された時に発生するイベントです。ボタンを離せばイベントが発生しません。

Windowsの特性として、MouseDown イベントはボタンを押し続けている間は、パルスが繰り返し発生するような感じでイベントメセージが繰り返し送り続けられます。つまり、MouseDownイベントハンドラが繰り返し呼び出されます。

MouseDown をダブルクリックすると、このイベントハンドラの定義が Display.Designer.cs に、実装のテンプレートが Display.cs に作成されます。

同様にして MouseMove イベントのハンドラも作ります。

作ったマウスイベント 

プロパティ画面では、今作ったマウスのイベントハンドラ名が確認できます。
  • currentTime_MouseDown
  • currentTime_MouseMove


自動作成された部分を確認してみます。

作ったマウスイベントのテンプレート

Display.cs には、今作った2つのイベントハンドラのテンプレートが出来ています。


使ったマウスイベントの定義

Display.Designercs には、2つのマウスイベントの定義が出来ています。


MouseDown イベントハンドラの実装を完成させる

Display.cs にコードを追加して、以下のように完成させます。

 // マウス位置の記録変数の宣言
 private Point mousePoint;

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //位置を取得する
   mousePoint = new Point(e.X, e.Y);
  }
 }

 // マウス移動のイベントハンドラ
 private void currentTime_MouseMove(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //フォームを移動する
   this.Left += e.X - mousePoint.X;
   this.Top += e.Y - mousePoint.Y;
  }
 }

初めて使うC#でプログラムを作るにあたって、なんとか少しづつ理解を深めています。

ネットにはC#に関する情報が多くあるので、とても参考になります。その上で、色々と実験プログラムを書いて自分の理解を確認しています。

変数宣言した後に実際に使うために、new キーワードでその変数の実体 (インスタンス) を作る必要があります。上の例で言えば、

private Point mousePoint;
mousePoint = new Point(e.X, e.Y);

C#の解説が目的でないので (というか、まだ無理なので)、このように書けば目的の動作になる一例としてご覧ください。

では、動作確認のために [F5]を押して、デバッグモードで実行します。クライアント領域のマウス操作だけで、アプリの終了とフォームの移動ができることが確認できますね。


3. マウス右クリックでフォームを最小化する

MouseDown イベントハンドラで、右ボタンの場合にフォーム最小化のコードを書きます。

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //位置を取得する
   mousePoint = new Point(e.X, e.Y);
  }

  // 右ボタンの場合
  if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
  {
   // 最小化する
   this.WindowState = FormWindowState.Minimized;
  }
 }


ここで、チョット味付けをしてみます。

マウス左ボタンで掴んで移動なので、クライアント領域で左ボタンを押した時にマウスカーソルを手の形 (Hand) に変更し、左ボタンが離されたら元の形に戻すようにしてみます。

 // マウス位置の記録変数の宣言
 private Point mousePoint ;

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   // 位置を取得する
   mousePoint = new Point(e.X, e.Y);
   // カーソルをHandに変更
   this.Cursor = Cursors.Hand;
  }
  else
  {
   // カーソルを元に戻す
   this.Cursor = Cursors.Default;
  }

  // 右ボタンの場合
  if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
  {
   // 最小化する
   this.WindowState = FormWindowState.Minimized;
  }
 }

 // マウス移動のイベントハンドラ
 private void currentTime_MouseMove(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //フォームを移動する
   this.Left += e.X - mousePoint.X;
   this.Top += e.Y - mousePoint.Y;
   // カーソルをHandに変更
   this.Cursor = Cursors.Hand;
  }
  else
  {
   // カーソルを元に戻す
   this.Cursor = Cursors.Default;
  }
 }


4. クライアント領域だけにする

クライアント領域のマウス操作だけでアプリの数量やフォームの移動ができるようになったので、フォームの枠とキャプションバーを外すことにします。これは、Display フォームのプロパティで設定できます。

フォーム変更前 

フォームのキャプションバーあたりをクリックして、フォームのプロパティを表示します。

フォームのプロパティ変更前 

FormBorderStyle は、FixedToolWindow に設定しています。

これを、None に変更します。

フォームのプロパティ変更後 

すると、ラベルだけのフォームになります。

フォーム変更後 

では、[F5]を押して、デバッグモードで実行してみます。

枠無し半透明フォーム 

最前面表示、枠無しで半透明、マウス操作だけで終了、移動、最小化が可能なデジタル時計ができました。


5. 配色を変える

このままだとチョット地味なので、背景色を黄色にしてみます。

フォームのプロパティで、BackColor は、デフォルトのまま Control になっています。

背景色変更前 


これを、Control から Info に変更してみます。

背景色変更後 


フォームデザイナ上で、背景色が変更されます。

背景色変更後のフォーム 

ここで、[F5]を押して、デバッグモードで実行して動作確認します。

枠無し黄色半透明フォーム 

最前面表示、黄色半透明で枠無し、マウス操作だけで終了、移動、最小化が可能なデジタル時計ができました。


6. アセンブリ情報の更新

前作でアセンブリ情報を作成したので、今回は内容を更新、そして一部変更します。

前回と同様に、ソリューションエクスプローラで MyClock プロジェクトを右クリックして、アセンブリ情報の画面を開きます。

こんな感じに入力しました。

アセンブリ情報 


7. リリースビルド

最後に、リリースモードでビルドします。

リリースビルド 


MyClock\bin\Release\MyClock.exe がリリースビルドされた実行ファイルです。

これを MyClock Ver 1.00 とします。


邪魔にならないデジタル時計
MyClock Ver 1.00
(VS Community 2015 ソース付き)
ダウンロード


ダウンロードファイルの内容
<MyClock100>
 <MyClock>  ← ソースのあるフォルダ
 MyClock.exe  ← 実行ファイル
 ReadMe.text  ← 説明ファイル




 MyClock Ver 0.10 を作る (2/2)







応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

自作プログラムがPC保護機能に引っかかる

プログラム電卓のためのWindowsプログラミング - トップページ
e-Gadget


2017/03/05



せっかく作った Windows プログラムを実行すると、PC保護の機能に引っかかることがあります。

自分の意思で「実行する!」と設定すれば良いのですが、嫌な気分になります。

自分のPCでウィルスやワームなどのセキュリティーをキチンとやっていても関係ありません。安全だと分かっていてもお構いなしです。

例えば、以下をご覧ください。
Windows 8 / 10 上で、起動出来ないソフトがある!

この記事では Windows SmartScreen の機能をオフにするのは推奨しないと書かれていますが、私も万が一を考えてオフにしないています。

Norton Internet Security を利用していますが、これも同じように警告を出します。

これらは、ユーザーが使うソフトの情報を吸い上げて自社のデータベースを更新していて、使用数が少ないと警告が出る仕組みのようです。多数決の暴力とも言えます。

以前自作したソフトや最近作ったものを Win 8 / 8.1 / 10 で初めて実行すると、ほぼ確実に警告が出ます。一旦「実行する!」としても、起動フォルダが変われば、また警告が出ることがあります。

Windows 10 の場合は、以下のような警告が出ます。

Win10のPC保護警告1 

自作プログラムや、信用している人やサイトから入手したプログラムの場合は、左上にある 詳細情報 をクリックします。すると画面が変わって、

Win10のPC保護警告2 

[実行]ボタンが出てきました。ここで [実行] をクリックすればOKです。改めてプログラムを起動すれば動くはずです。


そのあと、セキュリティーソフトが同じことをやります。Norton Internet Security の場合は、

NortonのPC保護警告

[このプログラムを実行する] をクリックすれば、言われ無き疑いが晴れて、保護を解除できます。

 常にこのファイルを許可する

にもチェックを入れてから、[このプログラムを実行する] をクリックしましょう。










応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

プログラム電卓のためのWindowsプログラミング

プログラム電卓のためのWindowsプログラミング - トップページ
e-Gadget


2017/01/31
更新 2017/02/02


無償で入手できる開発環境 Visual Studio Community 2015 を使い始めたところです。

プログラム電卓のための便利なWindowsプログラムが無ければ自分で作ってみよう、そこでWindowsプログラミングです。



はじめに

最近は Casio Basic プログラミングばかりで、Windowsプログラミングをしなくなって10年以上たちます。以前は Quick C やVisual Studio 6 の Visual C++ やたまに Visual Basic で Windows プログラムを作っていたので、全くの初心者というわけではありません。しかし当時は Windows 95, 98, XP といった環境でしたので、Windows そのものも大きく変わっていて、新たに勉強することも結構あります。

そこで、Windows 10 の環境で、使ったことが全く無かった C# の学習や、最新の VC++ にキャッチアップしようと思い、その過程を半ば自分のために残しておこうという趣旨で、プログラム電卓のためのWindowsプログラミング のカテゴリーを始めます。

Casio Basic 使いこなしと同様に、自分で調べたこと、実際に行ったこと、ネットで入手しにくい情報などを書き留める予定です。但し、メインは Casio Basic 使いこなしのプログなので、このカテゴリは途中で立ち消えになるかも知れませんが、先ずは始めてみます (他にも記事の予定がたくさんあるのに...)。新しい言語に触れるのは楽しいですね。



Visual Studio Community 2015 のダウウンロード

私の場合は、以下のサイトで、

Visual Studio Download

画面の一番左の "Visual Studio Community" からダウンロードしました。

インストール環境は、Windows 10 (64bit) Home で、Windows Update で最新の状態になったものです。

実際にインストールが始まると、必要なコンポーネントのダウンロードとインストールにはとても時間がかかります。私の遅いPCでは、取り敢えずのインストールに2時間くらいかかりました。

Visual Studio を開いてみると、C# と VB での開発に必要な殆どのコンポーネントはインストール済みなのに、それ以外を使うにはさらにダウンロード&インストールに1時間程度必要だったので、上で取り敢えずと書きました。

なお、ヘルプは必要だと思ったので、テーマ別にローカルにダウンロードして使えるヘルプシステム向けに、VS2015、C#, VB、CV++ に関する文書をダウンロードしてオフラインでもヘルプが使えるようにしました。日本語と英語の両方をインストールしましたが、日本語訳の品質はWeb版と同じように、まぁアレな感じで、英語を見直すことが多いです。

DELL の Inspiron 11 3148 (CPU: i3、メモリ: 4GB、HDD: 500GB) で走らせていますので、結構動作が重いです。逆にこれで動くアプリなら他のマシンでもOKと言えます。



Visual Studio 2015 Community って?
 
ネットで探すと山ほどの記事に出会うので、敢えて何かをここで書く必要もないでしょう。
...というか、最近はネットでいくらでも情報が得られますので、便利です。但しプログラミングに関しても、ネット情報は S/N が大きいので、自分で取捨選択してゆく必要があって、それがまた勉強になったりします。

実際にインストールしてみて分かったのですが、以下の環境が使えるようになっています;
  • C#
  • Visual Basic
  • Visual F#
  • Visual C++
  • SQL Server
  • Python
  • JavaScript
  • TypeScript
てんこ盛りですね。



当カテゴリの立ち位置

主に、C# と VC++ MFC ドキュメント/ビューアーキテクチャ の話題になると思います。

C# については、最初のうちは、初めて C# で何かアプリを作る過程で、学習したこと、問題とその解決方法などを記録に残します。従って最初のうちは、バカみたいに丁寧な記述になるかも知れませんが、私の頭に定着すれば割愛するようになると思います。



参考になる情報元

C#についてお世話になっているのは、
  • DOBON.NET .NET Tips : 信頼性の高いスグに使える情報があって重宝しています
  • ++C++;// 未確認飛行 C:基本の説明が分かり易いので悩んだときに役立ちます
  • MSDN .NET クラスライブラリ など:そもそもどうなってるの?をじっくり知るには良いかも...
  • その他検索で出てくるもの:S/Nが高くないので取捨選択が必要

VC++ (ドキュメント/ビュー アーキテクチャー) についてお世話になっているのは、
(特に これといったものに出会っていないが、強いて挙げるなら)


目 次

1. C# のトピックス
 1.1 初めて作るC#プログラム - MyClock
 1.2 追加するかも...

2. VC++ のトピックス
 2.1 ドキュメントビューアーキテクチャを使ってみる
  2.1.1 複数の拡張子を使う方法 - ファイルを開く/名前を付けて保存
  2.1.2 追加するかも...







応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

アドイン Casio Basic - トップページ

C:Basic - アドイン Casio Basic
<Top Page>

内容の更新や修正を随時行います.

初版 2015/12/18
C.Basic バージョンアップ 2017/02/02


[2017/02/02] Ver 1.00 beta7 リリース。

<目 次>
 - C:Basicとは?
 - 最新バージョン
 - オーバークロック・アドイン
 - C.BasicC:Basic の潜在能力
 - C.Basicの使い方とコマンドリファレンス
 - C.Basic 英語版Webマニュアル



C:Basic とは?


C:Basic は Casio Basic の上位互換で、Casio fx-9860GII USB POWER GRAPHIC 2 (SH4A CPU model) のアドインとして開発しているものです。C:Basic は 最終的には高速インタープリタとコンパイラを提供する予定ですが、今のところインタープリタのアルファ版(テスト版) を開発中です。インタープリター版を C.Basic (ドットが1個) と呼んでいます。

CasioオリジナルのCasio Basic は限られたハードウェアの電卓で動作するプログラミング言語で、「構造化プログラミング」が可能な実用的なものです。Casio Basic は簡単に使えて、電卓のみでプログラムを作成したり編集ができ、パソコンが不要です。なお、Casio Basic以外には、パソコン上でC言語でアドインプログラムを開発して、fx-9860GII に転送して使うこともできます。

Casio Basic は楽に開発できるものの、計算量の大きな複雑な処理を行ったり、ビットマップをグラフィックスで描くのは非常に時間がかかります。このような 純正Casio Basic の弱点を補う目的で開発が始まった C.Basic (インタープリタ版) は、Casio Basicとソースレベルで互換でありながら、10~20倍のスピードがあり、今のところ C:Basic (コンパイラ版) はさらに C.Basic (インタープリタ) の10倍の程度の処理速度になりそうなことが確認できています。

この C:Basic プロジェクトを進めているのは、sentaro21 氏(本アドインの作者), Krtyski (当ブログの管理人、テスト実施、サンプルプログラム作成、ユーザーズガイドとコマンドリファレンス作成)、さらに有志のユーザーの方です。

C:Basic プロジェクト



▋ C.Basic 最新のテストバージョン(ベータ・バージョン)
注意: 純正 Casio Basic をそのまま動かす場合は問題がほとんど無いと思われますが、拡張コマンドやオリジナルコマンドについてはまだバグがある可能性大です。それでもどこかにバグが潜んでいる可能性は有り、場合によってはあなたの電卓のデータが壊れる可能性が有ります。従って試す前には、データのバックアップを取ることをお勧めします。

C.Basicの使い方とコマンドリファレンス
ダウンロードしたZIPファイルに含まれている、Manual_J.txt と Readme_j.txt を参照してください。

C.Basicの独自拡張機能とCasio Basic互換コマンド
Manual_J.txt にまとめられているので、参照してください。


 オーバークロック アドイン: Ftune2

さらなる高速動作を楽しには、オーバークロック アドイン Ftuen2 を C.Basic と一緒に使うことをお勧めします。
このプログラムの評判については、下記参照ください;
- @ Unversal Casio Forum
- @ CEMETECH
- @ TI-Planet

私は1年以上使っていますが、今のところ問題は起きていません。Ftuen2 は安全対策がよく考えられていて、おそらく電卓を壊すことは無いでしょう。但し、念のため電卓のデータバックアップは行って下さい。

Ftune2 は、Casio fx-9860GII POWER GRAPHIC 2 (SH4A model),用をダウンロードし、他の機種用をダウンロードしないでください。



C.Basic と C:Basic の潜在能力

サンプルプログラムを使って、C.BasicC:Basic の潜在能力を見てみましょう。.

 ライフゲーム (Conway's Game of Life)

C.Basic は純正 Casio Basic の上位互換であり、拡張コマンドや言語機能があります。

高速なビットマッププログラムを純正Casio Basic で作ろうと考えるのは無謀なことだと言えます。しかし C.Basic を使えば、例えばライフゲームを楽しめます。



- ダウンロード: ライフゲーム Ver 0.74

これには、C.Basic Ver 0.63 以降のバージョンが必要です。.


以下の動画では、Ftune2 を使って クロックを 236MHz にチューンしています。

- ダウンロード: Ftune2
   Casio fx-9860GII USB POWER GRAPHIC 2 (SH4 model) 用をダウンロードしてください。
.
=====

コンパイラ版の C:Basic をシミュレートするため、ライフゲーム の繰り返し処理部分を、ネイティブコードの特別なコマンド "DotLife" に置き換えて実行したのが以下の動画です。 

・ダウンロード: ライフゲーム Ver 0.84



ご覧のように非常に高速で、517世代までの時間を測ると約10倍高速化しています。将来のコンパイラ版 C:Basic では、これよりも速くなるはずです。

ライフゲームの詳しい説明


2D迷路

以下のような画面全体のグラフィックス描画は、純正Casio Basicではとても時間がかかります。これを C.Basic で走らせると極めて短時間で描画が完了します。

Maze1 

2D迷路プログラムの詳しい説明


3D迷路ゲーム

3D_Maze 

左側の迷路マップの描画は、C.Basic を使うことで極めて高速化できます。右側の3D表示はポリライン処理により純正Casio Basic でも3D描画が軽くなるよう工夫されています。このプログラムでは、C.Basic の独自拡張機能を使いながら 純正 Casio Basicでも動作可能なようになっているのが特徴です。

3D迷路ゲームの詳しい説明


アクションゲーム - DRAGON



これは、C.Basic 独自拡張機能を活用したサンプルプログラムで、高速で多彩なビットマップ処理機能をうまく活用しています。
ゲームとしても飽きないチューニングがされています。このプログラムのソースは、C.Basic 独自拡張機能の理解に役立ちます。

アクションゲーム - DRAGON の詳しい説明



C.Basic の使い方とコマンドリファレンス

  C.Basic のインストール

  C.Basicマニュアルとコマンドリファレンス - Manual_J.txt

  C.Basic の紹介と更新履歴 - Readme_J.txt







Top に戻る




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム関数電卓は、プログラムを作り・使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。

人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR