投稿日:2021年3月6日
更新日:2021年3月5日
突然、.net VBの話になります。
ちょっと、表題から違がっていますが、カスタムコントロールは、以前から作成していました。
ただ、下記の理由の不満がありました。
- 作りが古い
- いらないロジックや、重複のロジックがある。
- 使用していないプロパティやメソッドが沢山ある。
- 現在のカスタムコントロールは、カスタムフォームでしか使えない。
- 基本的に、カスタムプロパティの使用可否のプロパティがない
- 固定で、お客さんにあったもので行っているものがある。
- 使用しない場合、プロパティーのOFFみたいなものがあると使いやすい
そこで、思い切って、新たなカスタムコントロールを作り直すことにしました(笑)
既存のカスタムコントロールを使って作り直した場合は、それをマネしてますので、スッキリすることが難しいので、新たに、作成することにしました。
余は、一度壊して作るということですね♪
ここの作業は、数日前から始めていまして、途中から記載になりますwww^^;
カスタムコントロールとは?
カスタムコントロールとは、簡単に言いますと、使っているコントロール(例:TextBox)に機能を追加して、新たなコントロールを作成するということです!
例を元に、難しく言いますと!
TextBoxのコントロールを継承して、新機能を追加したコントロールTextBoxExというコントロールを作ることになります。
オブジェクト指向ですね!(たぶん)
難しい内容は、他で色々明記ありますので、例を使って、明記してみたいと思います。
まず、いきなり、質問になります。(笑)
テキストボックスにフォーカスが当たった時、背景色を変えたりすることはよくありませんか?
その場合のロジックは、下記になると思います。
''' <summary>フォーカス取得</summary>
Private Sub TextBox5_Enter(sender As Object, e As EventArgs) Handles TextBox5.Enter, TextBox6.Enter
DirectCast(sender, TextBox).BackColor = Color.Yellow
End Sub
''' <summary>フォーカス失踪</summary>
Private Sub TextBox5_Leave(sender As Object, e As EventArgs) Handles TextBox5.Leave, TextBox6.Leave
DirectCast(sender, TextBox).BackColor = SystemColors.Window
End Sub
勿論、動作すると、下記になります。
このようなロジックをPG毎に作成しているのあれば、私的には、ムダに感じます。
問題の理由は、下記になります。
- フォーカスがあった場合の背景色は、各PGで同じな場合がほとんどである。
- 特別なPGの場合は、そこで対応すればよい。
- 新しい画面を作る時、毎回作成しなければいけない!
- 同じロジックを各PG毎で書いてあるので、下記の対応が非常に面倒である。
- お客さんから『もうすこし、薄い色にしてほしい~!』
- 作業的には!
- 検索で、探しながら、置換していく
- 一括で置換も出来ないこともないが、同じ色が別の意味で使われていた場合、これは無理である。又は、バグを作る原因になる。
- 今回は関係ありませんが、下記もムダに思えます。
- Handles TextBox5.Enter, TextBox6.Enter
- テキストボックスが増えたり減ったりすると、自分で書いたり、消したりする必要がある。
- 実は!
- このような書き方をしているシステム会社は、非常に多いのです(笑)
- このような場合、提案して、いつも変えさせていただいています(笑)
- このような書き方をしているシステム会社は、非常に多いのです(笑)
- これは、後日、新しいページで記載したいと思います。
- Handles TextBox5.Enter, TextBox6.Enter
これをカスタムコントロールに変えると!
具体的な作成方法は、次回としまして、利点のみをここでは明記します。
カスタムコントロールにて
- 初期値にてバックカラー(背景)を黄色に設定可能。
- ということは!
- フォームに配置しただけで、初期設定が黄色になる
- 各PGは、ロジックを書かなくてよい。
- PGもスッキリする!
- ということは!
- 例外PGの場合は、プロパティを設定(例えば赤)すればよい!
- 色の変更は、カスタムコントロールを修正するだけで、全てのPGの変わる!
- さらに、イベント明記も各PGで要らなくなる!
- これは、カスタムフォームとの関連があったりはしますが、とりあえず、よしとします。
こんなに利点があるのです!
これが、カスタムコントロールの利点になります。
でも、実際作ってみないとわかりませんよねwww^^;
ということで、次回は、この作り方を記載してみたいと思います。
あっ!
私は、ソフト会社(ディーラ)のカスタムコントロールを沢山作ってきました(笑)
今でも使ってくれています♪
ある部署(A)の依頼で、カスタムコントロールを作成しましたが、
よその部署(B)が、そのクラスをパチって、使っていました(笑)
これは、部署(B)から、他の開発依頼があった時判明しまして~!
『あの~、このクラス、私が作成したものですよ!』
『ただ、バチッた時期が悪いと思います』
『バージョンあ古すぎますwww』
って、教えてあげました(笑)
これが面白かったので、言いたかっただけですwww^^;
なぜ、カスタムコントロールを作るのか?
カスタムコントロールを使わないシステム会社もまだ多々あると思います。
では、なぜカスタムコントールを作成しないのか?
私が色々聞いた内容は、下記が、ほとんどでした。
- 今のままでも、お客さんには影響ないので、問題ない。
- 1PGは、そのPGを見るだけで判断したい。
- そもそも技術がない。でも、システムは作れる。
- クラスを管理(設計)できる人がいない。
あくまで、個人的になりますが、上の内容を分析すると!
たしかにカスタムコントロールを使用しなくて、システムは作成できますね!
但し!
- >>お客さんには影響ない
- 各PGに、同じロジックを書いているので、工数の無駄になって、少々お高くなるのでは?
- >>1PGは、そのPGを見るだけ
- これが意外と多いいのです。(笑)
- これをよく聞きCOBOLの文化を継承しているということになります。
- 実は・・・。関連会社のシステム担当者から以下をよく聞きます(笑)
- 上司は、自分より年上なので、昔の文化を押し付けられる。
- 大体、年配者の方は、このようなことを押し付けてくる。
- 個人的(システム担当者)には、共通部分は、共通化して、メインロジックに力を注ぎたい。
- ただ、上司がいるので、これが出来ない!
- などの、愚痴をよく聞かされますwww^^;(笑)
- 結論は、Visual Basic 6.0から、.netに変わった時、オブジェクト指向に取り残されたのが原因と思われます。(あくまで、主観的です(笑))
- >>そもそも技術がない。でも、システムは作れる。
- これは、どうしようもありませんね^^;
- というよりは、技術はやりながら解るはずなので、やろうとしていないだけだと思っています。
- >>クラスを管理(設計)できる
- 同じ部署や同じ課、又は、同じ会社で、基本的には、同じカスタムプロジェクトを使うことが理想です。
- なので、管理者がいるに越したことはありません。
- ただ、プロジェクトのよっては、カスタムコントロールのカスタマイズが必要いなることもよくあります。
- でも、これって、やり方なのです!
- オブジェクト指向を考えれば、直ぐに解決する問題になります。
- 設計者はいるに越したことはありませんが、これもより方ですね!
- 簡単なことから始めていけばいいのです!!
残っている懸案
分類 | 懸案 | 結論 | 完了 |
---|---|---|---|
java | throws ServletException, IOException | ||
今回のまとめ
本当は、こんな感じではなく、ListBoxのカスタムコントロールについて書く予定でしたが、流れが変わってしまいました(笑)
次回は、簡単なカスタムコントロールの作り方にしたいと思います♪