e-Gadget Portal - いつもトップに表示します

2006年以降に登場したカシオのプログラム電卓に搭載されている 新世代 Casio Basic は、今では構造化プログラミングが可能な高級言語です。実用プログラムやアクションゲームを作れる程度の能力を持っていることは、日本では意外に知られていません。新世代 Casio Basic の搭載機種では、fx-5800P、fx-9860GII、fx-CG20 (さらに fx-FD10 Pro) などのプログラム関数電卓間での互換性が高いのも大きな利点です。

e-Gadget の壁 [新設]
雑談できるところを作ってみました
  掲示板

最新記事                 プログラム電卓に関する投票  
※ 右のリストにあります。                 あなたのプログラム電卓 
※ 過去の記事を更新・修正した場合も、
 リストの上にきます。

e-Gadgetで多く読まれている記事
技術計算以外のプログラムが意外に役立つ
  プログラム関数電卓でプログラミング
 Casio Basic入門1
  Casio Basic の勧め

e-Gadget 全体の目次
全記事の目次・索引
  e-Gadget アクセス解析

Casio Basic 使いこなし
取扱説明書では絶対に分からない Casio Basic の使いこなし
  Casio Basic(超)入門
   ※ fx-5800P での始めてのプログラミング
 ▶ Casio Basic入門
   ※ 更新 2016/12/08
 ▶ Casio Basicコマンドリファレンス
   ※ 更新 2016/12/08
 ▶ Casio Basicでグラフィックス / 目次
   ※ グラフィックスコマンドの機能や仕様の詳細を探索した結果を連載しています。
    G01 - G02 - G03 - G04 - G05 - G06 - G07 - G08 - G09 - G10 - G11 - G12 - G13 - G14  ...
  逆引きCasio Basic
   ※ 更新 2015/10/12

プログラムライブラリ
Casio Basic プログラムを紹介
 プログラムライブラリ - 目次

プログラム経験者の Casio Basic 
Casio Basic プログラミング辞典 - 作成中...
※ プログラム経験者の Casio Basic
  インサイド Casio Basic - 目次
  Inside Casio Basic -Index

C.Basic と C:Basic
アドイン版 - 高速・高機能 Casio Basic インタープリタ - 開発中...
C:Basic プロジェクト
 C.Basic マニュアル&コマンドリファレンス
 C.Basic Manual & Command Reference

ご意見・ご質問
情報共有のため、各記事のコメント欄へお寄せください
※ 投稿の際には、本名でなくて、ニックネームやハンドルネームで結構です。
 ・ "公開コメント" > "非公開コメント"  の順でご検討ください.


応援頂けるとうれしいです.

人気ブログランキングへ
 


FC2ブログランキングへ



▋ 管理人からのメッセージ 
※ 更新 2015/06/13

▋ e-Gadget Web 
e-Gadget の図書館
 ⇒ e-Gadget Web について

▋ オーバークロック 
比較的安全なオーバークロックツールの紹介・Q&A
※ 計算時間のかかるプログラム作成に役立ちます.
※ fx-9860G / fx-9860GII / fx-CG10/20 向け

▋ 著作権について
※ 御願いとお約束



keywords: fx-5800P、 fx-9860GII、CasioBasicプログラム関数電卓


関連記事

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

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

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

<トップページへ>


2017/01/31
大きく改訂 2017/02/22
更新 2017/04/06

更新: 最新版 MyClock Ver 1.18.5.1 を公開(ソース付き)


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


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

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


はじめに

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

というのも、10年以上前に、アクティブになっているウィンドウのタイトルバーに常に張り付く小さな時計 scClock を作り、10年以上愛用していました。番外編 - 小さな時計 - 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


[2017/03/05 追記]
MyClock の外観がカスタマイズできるようになり、アクティブなキャプションバーに貼り付く機能も盛り込んだので、scClock として使えるようになりました。scClock は寿命を終えたようです。10年以上ご苦労様!


PC保護の警告について

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

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

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

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



最新の MyClock

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

==========

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

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

MyClock紹介ページ
MyClock Ver 1.18.4 以降で、[MyClockについて]画面のキャプションバーにある[?]ボタンクリックで、このMyClock紹介ページがブラウザで開くようになっています。


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

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

Ver1.00外観 

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


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

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

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

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

[C#プログラミングTIPS] 2重起動禁止のいくつかの方法


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

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

[C#プログラミングTIPS] モーダルダイアログと[OK]での戻り値

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

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

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


Win32 APIの利用

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

[C#プログラミングTIPS] フォームを点滅させる Win32 APIの利用

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

アラーム発動 


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

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

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

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

ここでも 標準の9pt よりも大きなフォントで表示しています。

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


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

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

[C#プログラミングTIPS] 外部プログラムを起動する


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

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

[C#プログラミングTIPS] モードレスダイアログを使う

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

[C#プログラミングTIPS] PropertyGrid を使う

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

[C#プログラミングTIPS] 別フォームのプロパティにアクセス (set / get) する

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

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

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

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

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


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

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


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

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


アプリケーション構成ファイル (*.exe.config) の思い込み

当初からレジストリや特殊フォルダを使わずに、インストールフォルダの中だけで簡潔するポータブルアプリを作っているつもりでした。アプリーション構成ファイルを使うと楽なので ビルドして得られる MyClock.exe.config をインストールフォルダに置いておけばポータブルアプリになると思い込んでいましたが、大きな勘違いでした。MyClock.exe.config は初期設定に使われるだけで、アプリケションの設定内容は AppData 配下のフォルダに作られていました。それもかなりの量のファイルやフォルダが作られていました。

さらに、アプリケーション構成ファイルは1つ前のバージョンの設定はそのまま引き継げますが、それ以前のバージョンで保存された設定情報を読み込めないという問題があることも知りました。

そこで、昔ながらの INIファイルにアプリの設定情報を保存して使うように変更しました。XMLファイルを設定ファイルとして使う方法もありますが、コーディングが楽な INIファイルを採用しました。Win32 API を呼び出してコーディングしますが、他の Win32 APIと異なり、C#用のラッパーの作成に少し悩みました。int 変数の読み書きは使わず、string (文字列) 変数のみの読み書きとしました。

[C#プログラミングTIPS] INIファイルを使う


ArrayList とトラックバー(スライダー)

時計の外観のプロパティを無制限に複数登録し、そこから任意のプロパティを呼び出す機能(カタログ機能)を追加するため、ArrayList と トラックバーを使ってみました。

ArrayListの良いところは、2次元配列と異なり、動的な要素を追加と削除が簡単にできる点にあります。無制限にArrayListに追加した外観プロパティを視覚的に無制限に表現するためにトラックバーはメリットがあると思いました。登録数が増えればトラックバーの刻みを細かくするだけで良いからです。

[C#プログラミングTIPS] ArrayListに配列を格納して使う

列挙したものを選択するコントロールとしては、
  • リストボックス
  • コンボボックス
  • イメージリスト
  • ツリービュー
  • ラジオボタン
  • ボタンを並べる
などが考えられますが、文字列を使わない(ユーザーがいちいち外観に名前を付ける手間が無い)、無制限に追加削除が簡単にできて決まった領域にコントロールを格納できる、といった要件を考え、さらにコーディングが楽そうだという理由でトラックバー (スライダー)を使ってみることにしました。

そして、プロパティの登録作業用のクラスを作って、インデックスプロパティ、操作メンバなどを行うような C#らしいコードに挑戦しました。C#使いの方からみればダメダメなコードだと思いますが、約1ヶ月前にC#を始めたころから見れば進歩はしていると思います。ダメさ加減も含めてソースを公開しているのは、気を引き締めるためもあります。

さて出来上がったカタログ画面ですが、こんな感じでカスタマイズした外観を[追加]します。
カタログ機能

操作するコントロールが少ないですが、それだけに柔軟です。登録数が多くなってトラックバーの刻みが細かくなりすぎる時を想定して、フォームを横に広げられるようにしています。

時計の実際の外観、[時計のカスタマイズ]画面の表示、そして[時計のカタログ]画面の3つの異なるフォームの表示内容は、常に同期して変化するようにしました。

外観のプロパティを6個登録して、そこから INDEX 1/6 を通常の外観に適用した例...
カタログ機能2

時計のカスタマイズ(外観の設定)画面はプロパティグリッドを使って、リアルタイムに外観をカスタマイズできるよう作っていて、さらにカタログ機能も同期しているため、トラックバーを動かすと、実際に時刻を刻んでいる時計の外観が動的に変更されます。

こんな小さな外観を登録しておき、アラーム設定時の外観に適用したところ...
カタログ機能3

こんな小さな外観だと、色々なフォームが上に被さって行方不明になりそうなので、これらのフォームは時計に重ならないように再配置するようにしています。

異なる3つのフォームの表示内容を同期させるため、Public static な変数を全てのフォームからアクセスするようにしています。


特殊フォルダへのアクセスと実行中に自分自身のショートカットを作成する

これまで自分で使う際には、ショートカットファイル MyClock.lnk を作って、それをスタートアップフォルダへコピーしてログイン時に自動起動するようにしていました。そこで、実行中の自分自身のショートカット作成とスタートアップフォルダへのコピーを行う「ログイン時に起動する」機能を追加しました。タスクマネージャーのスタートアップで確認できます。

スタートアップ設定 

[ログイン時に MyClock を起動する] にチェックを入れるとその場でスタートアップフォルダにショートカットを作成し、チェックを外すとその場でショートカットを削除します。

[C#プログラミングTIPS] スタートアップフォルダに実行中のアプリのショートカットを作る

初めてC#を使いだして1ヶ月程度の間に機能を追加してきたアプリですが、かなり満足できる仕上がりになってきたと思います。肝心の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/03/24

新世代 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
03/24¥6,487 ¥9,580 該当なし¥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: 使ったことが無いので、特にアドバイスできることが無い。

03/24
大きな動きはない。fx-9860GII は該当なし。

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 使いこなしのプログなので、このカテゴリは途中で立ち消えになるかも知れませんが、先ずは始めてみます (他にも記事の予定がたくさんあるのに...)。新しい言語に触れるのは楽しいですね。



当カテゴリの立ち位置

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

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




目 次

1. Visual Studio Community 2015
 1.1 Visual Studio Community 2015 のダウンロード
 1.2 Visual Studio Community 2015 って?

2. 参考になる情報元

3. C# のトピックス

 3.1 C#プログラミング TIPS
 3.2 初めて作るC#プログラム - MyClock
 3.3 追加するかも...

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



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

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





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


人気ブログランキングへ


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# で MyClock Ver 0.10 を作る (2/2)

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

<MyClock トップへ戻る>


2017/01/31

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


MyClock Ver 0.10を作る (2/2)

MyClock が動作するようになりましたが、.NET Framework を必要とする C# アプリに関しては、.NET Framework のバージョンが気になります。


Windows 10 にインストールした Visual Studio Community 2015 の C# で MyClock の新規プロジェクトを作成する時に「対象のフレームワーク」を .NET Framework 4.6.1 に設定しています。



.NET Framework と Windows バージョンの関係



.NET Framework には新旧多くのバージョンがあります。開発と同じPCで使う場合は .NET Framework のバージョンを気にする必要がありませんが、別のPCで使う場合はWindowsのバージョンによってはアプリが正常動作しない可能性が考えられます。

そこで、Windows と .NET Framework のバージョンの関係を調べてみました。

 .NET Frameworkのバージョンを整理する (1/2)
 .NET Frameworkの一部バージョンのサポート終了が差し迫る! その対策は? (1/2)

Windows 7 のサポートは 2020年1月15日に終了し、プレインストールされている .NET Framewok 3.5.1 の同日までサポートされるようです。Windows 8.1 / 10 のサポートと、プレインストールされている .NET Framework 3.5.1 / 4.5.2 / 4.6.x は 2023年1月15日までサポートされるようです。

そこで、Windows 7 以降で使えるようにするには、.NET Framework 3.5.1 を対象にしてアプリを作れば2020年1月15日までは問題ないことが分かります。Windows 8.1 以降を対象にするなら、.NET Framework 4.6.2 (本日時点での最新版) を対象のフレームワークにしておけば 2023年1月15日まで問題ないことになります。

さすがに Windows XP をネットに繋いで使っているケースを考慮する必要は無いと割り切れますが、Window 7 は未だに人気が高いので、MyClock は .NET Framework 3.5.1 を前提にしようと思います。




対象の .NET Framework バージョンを変更

プロジェクトの「対象のフレームワーク」に設定する .NET Framework バージョンの確認や変更は、プロジェクトのプロパティで行えます。

ソリューションエクスプローラーで、プロジェクト MyClock を選び、

プロジェクトのプロパティの出し方 

右クリックでメニューが現れ、

プロジェクトのプロパティの出し方2 

[プロパティ(R)] を選ぶと、

 プロジェクトのプロパティ縮小  

プロジェクト MyClock のプロパティが現れます。対象のフレームワークが、デフォルトで .NET Framework 4.6.1 になっていることが確認できます。

これを .NET Framework 3.5 に変更 (3.5 Client Profile ではなくて 3.5) し、プロパティを保存します。変更を有効にするにはソリューションを一旦閉じてから再び開く必要があります。

そこで、全てのファイルを保存後、[ファイル(F)] - [ソリューションを閉じる(T)] を選ぶか、右上の[X] でソリューションを一旦閉じます。そして再びソリューションを開くと、「対象のフレームワーク」の変更が反映されます。

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

するとエラーと警告が発生しました。

フレームワーク3.5でのエラー  

 マークがエラーで、これがあるとビルドできません。そこでこのエラー表示の上でダブルクリックしてみると、エラー箇所が表示され、カーソルが Display.cs と Program.cs の冒頭にある


using System.Threading.Tasks;

の Tasks の前にあり、Tasks の下に赤い波線がついています。

この機能が .NET Framework 3.5 ではサポートされていないので、上記2つのファイルでこの行をコメントアウトします。

//using System.Threading.Tasks;


コメントアウトすると、その場でエラー表示が消えます。[F5] を押してビルド&実行してみると、ビルドに成功して MyClock が正常動作しました。

なお、4つの警告がありますが、Microsoft.CSharp と System.Net.Http が見つからないことによります。.NET Framework 4.6.1 には用意されているので組み込まれたが、3.5.1 に変更したら見つからなくなったのが原因のようです。

以下のように、これら2つに警告マークがついています。

参照エラー 

今は、これらの機能を使わなくても MyClock は正常動作しているので、この警告を無視することにします。

対象フレームワークを変更したのに参照の対象を自動的に更新できていない、つまり 開発環境がそこまで万能では無いのだと思います。これらを削除することもできますが、将来の機能追加で対象フレームワークをより新しいものに変更した時に、削除したものを自動で追加してくれないかも知れず(動作が怪しい)そのときに苦労したくないので、そのままにしておきます。


これで、MyClock は、対象フレームワーク .NET Framework 3.5 (つまりWindows 7 以降) で動作するようになりました。






アセンブリ情報を変更

プロジェクトのプロパティを開き、

プロジェクトのプロパティ縮小 

 [アセンブリ情報(I)...]をクリックすると、デフォルトのアセンブリ情報が出てきます。

アセンブリ情報変更前 

ここで、タイトル、製品、著作権を変更してみます。

アセンブリ情報変更後 

[OK] で保存。

ここでの設定は、実行ファイル MyClock.exe を右クリックして表示されるプロパティで [詳細] ボタンを押して現れる情報に反映されます。

プロパティ情報が変更されたので、[F5] でビルドしデバッグモードで実行して動作確認します。

デバッグモードで作成された MyClock.exe は、作業フォルダの下にある bin\Debug フォルダにあります。このファイルを右クリックしてプロパティを表示すると、ここにアセンブリ情報が反映されていることが分かります。

プロパティ1 

プロパティ2 





アイコンを設定


今は既定のアイコンになっています。そこでアイコンを変更してみます。

以下のサイトから無償で使えるアイコンを選んで使うことにします。

FIND ICONS

こんなアイコンにしてみました。

アイコン 

このアイコンデータは、作業フォルダのどこかにコピーしておきます。今回は、作業フォルダに res フォルダ (リソースフォルダ) を作り、そこにアイコンファイルを入れることにします。

resを追加した作業ファイル  


さて、これをアプリに登録するには、プロジェクトのプロパティを開き、

アイコン登録1縮小 

アイコンとマニュフェスト(C) にチェックが入っていますが、この下にある(既定のアイコン) の右にある参照ボタンをクリックして、res フォルダ内にコピーした xclock.ico を選択します。

アイコン登録2縮小 


このように、アイコンが登録できました。

こうしておいてビルドすれば、アプリのアイコンが変わります。作業フォルダの下にある bin\Debug\ フォルダを開くと、MyClock.exe のアイコンが時計のアイコンになっています。

デバッグモードの実行ファイル 

表示を「中アイコン」に変えてみると、

新アイコンの実行ファイル2 

こんな感じで、それらしいアイコンになったことが分かります。

ところで、作業フォルダの下にある *cs ファイルがあるところに、アイコンファイルがあります。自動的にここにコピーされるようです。

新アイコンのもう一つの場所 


なお、フォーム Display のプロパティにある Icon がまだ既定のアイコンのままになっていますので、これも変更しておきます。今は FormBorderStyle が FixedToolWindow になっているので、フォームにアイコンは表示されませんが、これを仮に Sizable に変更してみると新しいアイコンになります。FixedToolWindow に戻しておきます。

Debug モードで「リビルド」しておきます。そして [F5] キーで実行して、問題ないことを確認します。



Releaseモードでビルド

さて、ビルドには Release モードもありますので、これを使ってみます。

リリースモードに変更 

このように「ソリューション構成」を Rlease に変更し、ビルドするとリリースモードで実行ファイルができます。

リリースモードの MyClock.exe は、作業ファイルの下の bin\Release\ の中にあります。
リリースモードの実行ファイル 
リリースモードで [F5] キーを押すとエラーになって実行できません。リリースモードでビルドするとデバッグ情報が無いのでエラーになります。従って、このフォルダにある実行ファイルを直接実行して動作確認をします。

リリースモードでビルドは、デフォルトで最適化が行われる設定になっています。しかし、デバッグモード、リリースモードいずれの実行ファイルもファイルサイズは 142KBと同じ、この程度の簡単なアプリでは実行速度の違いも分かりません。

一応 リリースモードの実行ファイルを完成形とします。これで、C#で初めて作るアプリ MyClock Ver 0.10 ができました。



ダウンロード

 MyClock Ver 0.10 (ソース付き)








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


人気ブログランキングへ


FC2ブログランキングへ



    

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

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

関連記事

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

C# で MyClock Ver 0.10 を作る (1/2)

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

<MyClock トップへ戻る>


2017/01/31

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


MyClock Ver 0.10を作る (1/2)

仕 様
  • フォントが大きい
  • 時計は半透明で常に前画面表示


MyClock プロジェクトを作る

初めての C# なので、分かる範囲で手順とポイントを記録しておきます。

1. Visual Studio Community 2015 を起動

起動時に、管理者権限にするかそうでないかの選択肢があります。取り敢えず管理者権限で起動します。


2. 初めてのソリューションとプロジェクトの作成

 新しいプロジェクト作成の方法

新しいプロジェクト作成には複数の方法があります。
  • スタートページにある「新しいプロジェクト ...」のリンクをクリック
  • ツールバーの左から3詰めの"新しいプロジェクト"ボタンをクリック
  • メニューで、[ファイル] - [新規作成] - [プロジェクト] を選ぶ

ひな形プロジェクトを選ぶ

[テンプレート] - [Visual C#] - [Windows]  から「Windowsフォームアプリケーション」を選択

「名前(N):」と「ソリューション(M):」に MyClock と入力し、「場所(L):」に適切に入力します。
なお、「場所(L):」で設定したフォルダの下に、ソリューションに指定した名前のフォルダが自動的に作られ、その下に必要なファイルが自動生成されます。

バージョン管理を分かり易くするために、新規プロジェクトを作る前に MyClockフォルダを作っておき、さらにその下に例えば MyClock0100 とバージョンが分かるフォルダも作っておき、このフォルダを「場所(L):」に指定しています。

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

[OK] をクリックすると、ひな形のプロジェクトが作成されます。自動作成だけで合計 92KB のファイルが数多く生成されます。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ
   <MyClock>
    MyClock.sln
    <vs.>
    <MyClock>
     App.config
     MyClock.csproj
     Form1.cs
     Form1Designer.cs
     Program.cs
     <bin>
      <Debug>
       MyClock.exe.config
       MyClock.vshost.exe
       MyClock.vshost.exe.config
       MyClock.vshost.exe.manifest
      <obj>
       <Debug>
        MyClock.csproj.FileListAbsolute.txt
        DesignTimeResolveAssemblyReference.cache
        TemporaryGeneratedFile_xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxxxxxx.cs
        TemporaryGeneratedFile_yyyyyyyy_yyyy_yyyy_yyyy_yyyyyyyyyyyy.cs
        TemporaryGeneratedFile_zzzzzzzz_zzzz_zzzz_zzzz_zzzzzzzzzzzz.cs
        <TempPE>
      <Properties>
       AssemblyIngo.cs
       Resource.Designer.cs
       Resource.resx
       Setttings.Designer.cs
       Settings.settings

そして、フォームデザイナーが開いて、デフォルトの (素の) フォームが現れます。

初めてのフォームデザイナー 


 初めてビルドしてみる

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

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

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

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

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

ここで、
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock0100\
は「場所(L):」で設定したパスで、

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

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

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

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


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


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

方法は複数あります。
  • [F5]キーを押す
  • ツールバーの[ 開始]ボタンを押す
  • メニューで、[デバッグ] - [デバッグの開始] を選ぶ
ソースファイルが変更された状態でデバッグを始めると、先にビルドが行われてからデバッグが始まります。従って [F5] を覚えておけば、キーを押すだけでビルドとデバッグ開始になるので便利です。

素のMyClock 
素のウィンドウが既にできています。最小化ボタン、最大化ボタン、中止ボタン、システムメニューを出すアイコン、プログラムのタイトル Form1 が備わっていて、いっちょ前にウィンドウの陰までできています。これは Windows 10 で実行した時の画像です。Windows 7 や 8 ではその環境でのデフォルトのウィンドウになる筈です。

1行もコードを書かずに、取り敢えずここまでは自動的に作ってくれますが、昔の VC++ 6 でも変わりなく驚くことでもありません。実はVisual Studio 2015 での開発の段取りは、基本は以前の Visual Studio 6 と同じような感じですので、経験があれば必要なものは探して使えると思います。

ここで、MyClock ソリューションと、その中に含まれる MyClock プロジェクトが作成されたことになります。このソリューションの中に 新しいプロジェクトを作って含めることができます。


 namespace、class そして Form

私には Namespace (名前空間) は新しい概念で、クラスやメンバー は MFC (Microsoft Foundation Class) で馴染みがあり、Form は Visal Basic で出てきました。

C# は、これらが混じった感じですね。C++ で記述できる Visual Basic とでも言えそうな感じです。

画面右にあるソリューションエクスプローラで、Form1.cs を
右クリックして [コードの表示] を選んで、自動作成されたコードを眺めてみます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MyClock // これがプロジェクトMyClock
{
  public partial class Form1 : Form // ここで Form1 ウィンドウに必要な処理を書く
  {
    public Form1() // Form1 の最初の処理として初期化している
    {
      InitializeComponent();
    }
  }
}

ここで、using は、VC++ の include のような感じで、予め準備されているライブラリからデフォルトで必要なものが列挙されていて、今後必要に応じて追加することになります。

public Form()
{

}

は、この先頭の位置に記述しておかないと、開発環境がエラーを出します(実際悩みました)。Form1 のインスタンス生成で最初の1回だけ行われる処理のようです。

さらに分かることとしては、

using System.Windows.Forms;

で、関連づけられた Forms に 基底クラスの Form の定義があって、それをサブクラス化して Form1 クラスが作られています。

仮に、以下のように class Form1 の中で、public な静的文字列変数 m_variable を宣言しておきます。

namespace MyClock
{
 public partial class Form1 : Form
 {
  public Form1() 
  {
   InitializeComponent();
  }

  public static string m_variable; // 静的文字列変数
 }
}

この変数へ、class Form1 の外の例えば class Form2 からアクセスするには、

Form2 の中では、

(namespace).(class).m_variable

つまり

Form1.Form1.m_variable

と記述する必要があります。スコープを考えると名前空間がクラスの上位にあるわけです。

そして、Form2 の中で、一例として

public string m_var = Form1.Form1.m_variable;

と橋渡しをしておけば、タイプ数の少ない m_var を使えて便利です。

なお、Visual Studio では正しく記述すれば、クラス名を Form1 と色分けして表示してくれるので、目安になって便利です。


Form名 = クラス名

今、名前空間とプロジェクト名が、MyClock になっています。フォーム名とクラス名は自動生成された Form1 のままです。

これを適切な名前に変更します。時間を表示させるので、Display としましょう。フォーム名とクラス名を変更するために、全て手で変更するのは大変なので、自動変更の機能を使います。但しプログラムが込み入ってくると自動生成も完璧ではないと心配される (どこまで信用して良いか分からない)ので、自動生成された直後に名称変更を自動で行わせることにします。

ちょっと脱線しますが、ここで自動作成された主なファイルは、以下です。
  • Form1.cs
  • Form1.Designer.cs
  • Program.cs
主にコーディングするのが Form1.cs です。

Form1.Designer.cs は開発環境の機能を使って自動でコードに落としてくれるものです。部品をフォームへドラッグ&ドロップで追加したり、フォームや部品のプロパティを変更したり、イベントハンドラのテンプレート作成などがコーディングせずに行えます。そして、その結果がこのファイルと Form1.cs の両方に反映されます。

Form1.Designer.cs は宣言や定義が書き込まれ、Form1.cs にはテンプレートが書き込まれます。このテンプレートの中に具体的にコーディングしてアプリを作ってゆきます。

一旦作成したイベントハンドラが不要になった場合は、Form1.cs と Form1.Designer.cs の両方で関連する部分だけを慎重に削除しないと、Visual Studio が混乱して面倒なことになります。

Program.cs には WinMain() 関数が書かれていてます。これはアプリが起動した時に最初に実行されるもので、終了時にもここへ戻ってきて必要な処理を行います。アプリが起動してからフォームのインスタンスを生成する前に必要な処理はここにコーディングします。

話を元に戻して、フォーム名とクラス名を実際に Display に変更します。

ソリューションエクスプローラで、Form1.cs で右クリックして[名前の変更] を選ぶと、Form1.cs が反転するので、そこで Display.cs となるように変更します。すると以下のメッセージボックスが現れます。

リファレンス 

ここで [はい]をクリックすると、自動で名称変更してくれます。他の関連ファイル名も変更され、主要ファイル名は以下のようになりました。
  • Display.cs
  • Display.Designer.cs
  • Program.cs
これら3つのファイル内に記述されている内容では、フォーム名とクラス名が Form1 から Display に変更されています。自動処理に任せるとフォーム名とクラス名が同じになります。どうしてもこれらを違う名前にする必要性が無い限り、この作法に従うことにします。

上記以外のファイル名も変更されているのは、ソリューションエクスプローラで確認できます。
Ver1.00ソリューションエクスプローラ 

Display.cs [デザイン] で表示されるフォームのタイトルバーは、まだ Form1 となっています。これはフォーム名やクラス名とも無関係で、単にフォームのテキスト (Display.Text) の設定が Form1 のままになっているためです。これは、フォームのプロパティで変更できます。プログラム中で変更するには Text プロパティを使って、

Display.Text = "変更する文字列";

とします。タイトルバーに表示するテキストをアプリの状況に応じて動的に変更したい時に使えます。

今回は、フォームのテキストを Form1 から MyClock に変更してみます。Display.cs[デザイン]を表示して、フォームをクリックすると、Displayフォームのプロパティ一覧が(右下に)表示されるので、そこで Text というキーを探して、Form1 から MyClock に変更します。この変更は Display.Designer.cs に自動的に反映されます。

全てのファイルが変更されたので、[F5] を押して、ビルドとデバッグモードでの実行を行います。
なお、ビルドする際に変更されたファイルは上書き保存されます。

Displayフォーム 
これで下準備終了です。


3. デジタル時計の部品を追加

時刻を表示するために、ラベルとタイマーの2つの部品を導入します。ラベルは 12:34:56 といった文字列を表示するための部品、タイマーは現在の時刻を取得するための部品です。

そして、タイマーで1秒ことに時刻と取得し、その結果をラベルに表示するように仕上げてゆきます。

ところで、Windows アプリは、四角い領域を視覚的に表示したウィンドウから構成されるのが基本です。タイトルバー付きのウィンドウ (C# や VB ではフォームという) であれ、ボタンであれ、文字列入力用のエディットボックス (C# や VB ではテキストボックスと言う) だろうと、全てウィンドウであって、味付けが違うだけです。

フォームに貼り付ける部品には、他にもメニューバーやツールバーなどがあります。タイマーも視覚効果は無いけれど部品の1つです。


部品の登録

Visual Studio (の左) にツールボックスがあり、そこには様々な部品が準備されています。これをウィンドウにドラッグ&ドロップすることで、これらのサブクラス化、インスタンス生成、宣言や定義などの初期的なコードが自動的に追記されます。

今回は、時間表示用に ラベル(コモンコントロール)とタイマー (コンポーネント) を使うことにします。

左にあるツールボックスをクリックて一旦ピン止めし、ラベルとタイマーをドラッグ&ドロップするとこんな感じになります。

部品登録 

フォーム内に label1 があり、フォーム外の下に timer1 があります。

この段階で、Display.cs と Program.cs は変更されず、
DisplayDesigner.cs では多くのコードが自動生成されているのが分かります。

namespace MyClock
{
 partial class Display
 {
  /// <summary>  /// 必要なデザイナー変数です。
  /// </summary>

  private System.ComponentModel.IContainer components = null;

  /// <summary>  /// 使用中のリソースをすべてクリーンアップします。
  /// </summary>
  /// <param name="disposing">マネージ リソースを破棄する場合は true を指定し、その他の場合は false を指定します。
  protected override void Dispose(bool disposing)
  {
   if (disposing && (components != null))
   {
    components.Dispose();
   }
   base.Dispose(disposing);
  }

  #region Windows フォーム デザイナーで生成されたコード

  /// <summary>  /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
  /// コード エディターで変更しないでください。
  /// </summary>

  private void InitializeComponent()
  {
   this.components = new System.ComponentModel.Container();
   this.label1 = new System.Windows.Forms.Label();
   this.timer1 = new System.Windows.Forms.Timer(this.components);
   this.SuspendLayout();
   //
   // label1
   //
   this.label1.AutoSize = true;
   this.label1.Location = new System.Drawing.Point(101, 64);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(35, 12);
   this.label1.TabIndex = 0;
   this.label1.Text = "label1";
   //
   // Display
   //
   this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
   this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   this.ClientSize = new System.Drawing.Size(284, 261);
   this.Controls.Add(this.label1);
   this.Name = "Display";
   this.Text = "MyClock";
   this.ResumeLayout(false);
   this.PerformLayout();

  }

  #endregion

  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.Timer timer1;
 }
}

ここでは、上の方でアプリケーション終了時に各部品を解放する処理、それ以下で追加した部品の定義とデフォルトのプロパティの設定が記述されています。


ラベルとフォームのプロパティ設定

ラベルとフォームのプロパティを設定して、以下のような外観にします。

Ver1.00外観作成 

先ずはラベルの設定:
ラベルをクリックすると(右下に)ラベルのプロパティが表示されるので、そこで以下のように変更しますます。
  1. デザイン - (Name) を currentTime
  2. 配置 - Dock を Fill
  3. 表示 - Font を MS UI Gothic のまま 36pt、太文字
  4. 表示 - Text を 12:34:56
  5. 配置 - Size は 192, 48 (マウスで大きさを調整するとこのくらいになる)
Text を 12:34:56 とすることで実際に時刻が表示された時のラベルのサイズを調整できます。
Doc を Fill にすることで、ラベルがフォームにうまく張り付きます。


次は、フォームの設定:
フォームのタイトルバーをクリックすると(右下に)フォームのプロパティを表示されるので、そこで以下のように変更します。
  1. ウィンドウ スタイル - Opacity を 50%
  2. ウィンドウ スタイル - TopMost を True
  3. デザイン - (Name) は Display になっている筈
  4. 表示 - FormBoderStyle を FixedToolWindow
  5. 表示 - Text は MyClock になっている筈
  6. 配置 - Size は 207, 85 (マウスで大きさを調整するとこのくらいになる)
Opacity 50% で半透明になり、TopMost True で最前面に表示されます。

では、[F5] を押して、ビルドとデバッグモードでアプリを実行をすると、

Ver1.00外観 

こんな感じで、アプリが起動します。半透明で最前面表示になっていることを確認します。

右上の[X]ボタンをクリックすれば終了。なおデバッグモードで実行している時は、
  • [デバッグの停止]ボタンを押すか、
  • メニューで [デバッグ(D)] - [デバッグの停止] を選ぶ
ことで、アプリを強制的に終了できます。

これで外観ができたので、時刻を表示する機能を作ります。


タイマーの設定

タイマーは 1 Tick が 1 ms (ミリ秒) です。1秒ごとに数字が変わるデジタル時計を作るのでタイマーの間隔 (Interval) は 1000 ms になります。そこで、タイマーの名前を secTimer に変更します。すると、タイマークラスの名前が自動的に secTimerに変更されます。

実際の作業は、ドラッグ&ドロップした timer1 をクリックして、(右下にある) timer1 のプロパティを変更することです。
  1. デザイン - (Name) を secTimer
  2. 動作 - Enabled を True  (これを忘れるとタイマーは動作しない)
  3. 動作 - Interval を 1000
フォーム、ラベルそしてタイマーのプロパティの設定を変更した結果は、全て DisplayDesigner.cs に反映されています。チョット眺めてみると、それぞれのクラスとメソッド(関数)の使い方のヒントが得られて大いに参考になると思います。但し、くれぐれも不用意な編集・変更には注意しましょう。


 現在の時刻を表示させる方法

ここまで一切コーディングせずに進めてきましたが、これ以降は実際にコードを書く必要があります。

Windowsプログラミングでは、発生したイベントを捕らえて、そこで必要な処理を記述するのが基本です。これは、ある単独の処理がCPUを占有しないための方策です。そうしないとマルチタスク処理が破綻してしまいます。

イベントを捕らえて必要な処理を行う部分をイベントハンドラと呼びます。

今回は、タイマーイベントが 1000 ms (=1秒) ごとに発生するのを利用します。タイマーイベントハンドラを作り、その中で現在の時刻をラベルに渡すようにコーディングするだけです。


タイマーイベントハンドラの作成

既に、secTimer という名前 (クラス名) でタイマーを作りました。

secTimerコントロール  

secTimer コントロールを、マウスの左ボタンでダブルクリックします。すると、自動的にイベントハンドラのテンプレートを作成し、それを表示してくれます。

タイマーイベントハンドラのテンプレート 



現在の時刻をラベルに渡す

コモンコントロールという視覚的に機能する部品は、データを受け取って表示する機能があります。

例えば、文字列を受け取れるコントロールに文字列を渡すには、以下のようにコーデイングします。

(コントロールのクラス名).Text = "文字列";

今回は currentTime と名前をつけたラベルコントロールに時刻の文字列を表示させるので、

currentTime.Text = (現在時刻の文字列);

とすれば良いわけです。currentTime クラスはラベルの基本クラスから全ての機能を引き継いでいて、Text プロパティも引き継いでいます。上の作業で自動的に作成された MyClockDesinger.cs には、この引き継ぎに必要なコードとプロパティ設定のコードが含まれています。

具体的には、

//
// currentTime
//

の下に currentTime に必要な処理が書かれています。


さて (現在時刻の文字列)を取得するには、DateTime クラスを利用します。DateTime クラスには Now というプロパティがあって、現在時刻を取得してくれます。さらに Now に対して ToSring() 関数も使えるようになっていて、これは時刻を書式に従って文字列に変換してくれます。つまり、

DateTime.Now.ToString("HH:mm:ss");

と書けば、現在時刻の文字列を返します。

従って、

currentTime.Text = DateTime.Now.ToString("HH:mm:ss");

の1行で、ラベルに現在時刻が渡されます。

Private void secTimer_Tick(object sender, EventArgs e)
{
  currentTimer.Text = DateTime.Now.ToString("HH:mm:ss");
}

それでは、[F5] を押して、ビルド後にデバッグモードで実行してみます。一応時計として動作しますが、起動直後の一瞬だけ以下の表示になります。

Ver1.00外観 

起動直後は、タイマーイベントハンドラが働かないのが原因です。


フォームの描画

タイマーイベントが発生する時(1秒ごと)に現在時刻の表示を行うようにコーディングしました。それ以外のタイミングでは時刻を表示しません。そしてフォームが表示されると同時にタイマーイベントが発生する保証はありません。

そこで、MyClock を起動し、そのフォームが描画されるタイミングで時刻表示をさせれば、問題が解決しそうです。フォームの描画はメッセージ を受け取ることで動作するのが Windows プログラムの基本なので、フォームを描画するイベントを捕らえて、現在時刻をラベル currentTime に渡せば良さそうです。

C# で最初に自動で作成されるソースコードには、フォーム描画のイベントハンドラが自動作成されていないので、自分で作る必要があります。タイマーイベントハンドラを作ったのと同様に、マウス操作だけでフォーム描画するイベントハンドラのテンプレートが作れます。

MyClockのフォーム (Display) のデザイナー画面を開きます。
  • ソリューションエクスプローラで Display.cs をダブルクリックするか、
  • ソリューションエクスプローラで Display.cs を右クリック - [ビューデザイナー(D)] を選ぶ
MyClock.cs 

ビューデザイナーを開く
 


Display.cs [デザイン] (フォームデザイナー) が開いたら、タイトルバーあたりをダブルクリックします。


Displayビューデザイナ 

すると、イベントハンドラのテンプレートが自動作成され、そのコードが表示されます。

フォームイベントハンドラ 

今自動作成されたイベントハンドラの中に

currentTime.Text = DateTime.Now.ToString("HH:mm:ss");

をコーディングすれば、フォーム描画時に現在の時刻が表示されます。

private void Display_Load(object sender, EventArgs e)
{
 currentTime.Text = DateTime.Now.ToString("HH:mm:ss");
}

では、[F5] を押して、ビルドと実行をします。

MyClock2

フォームが表示された直後から正しく時刻を表示されていることが確認できます。


コードの重複を避ける

取り敢えず機能面では完成ですが、少し気になることがあります。Display.cs のコードを眺めてください。

フォーム描画イベントハンドラ完成


ラベル currentTime に現在時刻を渡すコード

currentTime.Text = DateTime.Now.ToString("HH:mm:ss");

が、そのまま2カ所に記述されています。機能追加やプログラムの複雑化に備えて、関数に置き換えることにします。時刻を表示する関数なので、DisplayTime() とします。

DislayTime() の中に、この1行のコードを入れます。

Display_cs完成

念のため [F5] を押して動作確認します。


 MyClock Ver 0.10 を作る (2/2)







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


人気ブログランキングへ


FC2ブログランキングへ



    

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

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

関連記事

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

楽屋裏 - カシオ グラフ関数電卓 fx-CG50 が2017年春登場

楽 屋 裏
e-Gadget


2017/01/16
続報 (1) 2017/01/21


2017年春に、カシオから北米向けにグラフ関数電卓 PRIZM fx-CG50 が発売予定とのアナウンスがあったと、sentaro様 から情報を頂きました

カシオアメリカの発表

・学生の数学教育向けを強調
・3Dグラフ機能の強化
・カタログ機能の進化
・教科書スタイルのディスプレイ
・より直線的 (tapered, クサビ型?) な筐体デザイン
・メーカー希望小売価格 99.99 ドル (実売はもっと安いだろう)

なんだか詳細はさっぱり分からない表現が多いですね。

これを受けて、カシオフリーク達はアドイン機能が無くなるのではないかと、おおいに心配しています。
そして、Casio Basic は相変わらず遅いまま、との推測もあります。

CHEMETECH の記事
 Universal Casio Forum の記事
 cordwalr US の記事

但し、アドインが無くなるとは公式には発表されていません。カタログ機能との言及がありますが、fx-9860GII や fx-CG10/20 では、Casio Basic のコマンドを一覧する機能なので、Casio Basic は搭載されるでしょうが、アドインが無くなるという話では無いかも知れません...

海外のコミュニティーで、アドイン無くすな!とこれだけ声が大きいのを、カシオ殿は是非冷静にくみ取って頂きたいと思います。アドインがあるから、これだけ普及したという考えもあります。

一方で、今後の携帯プログラミングは、ニンテンドー3DS  の一人勝ちとなるのでしょうか?
強力で高速な BASIC (プチコン) が使えるので、プログラム電卓でのプログラミング が出来なくなれば、これからは 3DS へ民族の大移動があるかも知れませんね。

いずれにせよ、しばらくは注目です!



=== 続報 (1) [2017/01/21] ===

その後、CHEMETECH で外観や画面の画像が出てきました。

CHEMETECH の記事

元ネタは CASIO の学校向け計算機のページ のようです。
fx-JP900 と似た外装で、角の丸い長方形です。これが Tapered (直線的) と言われたものなんですね。

画面のサンプルもありました

残念ながら、メニュー画面がありません。Add-In があるかどうかすぐ分かるんですけど...

但し、上の画面のサンプル のコメントに以下の記述がありました。
Those new main menu icons tell me (real) add-in support is most likely gone.
(それらの新しいアイコンメニューアイコンから、(本当の)アドインサポートは、ほぼ無くなったようだ。)

う~む、そうなんだろうか?





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

人気ブログランキングへ


FC2ブログランキングへ





keywords: プログラム関数電卓、fx-5800P、データリンク

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

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

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

やす (Krtyski)

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


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

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

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

人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR