サイト検索
検索
サイトメニュー
Menu
RTB SoftLab ラテベ ソフトラボ (ラテベラボ)
私の知っているソフトの操作を解りやすく、解説していきます。
サイト検索
検索
サイトメニュー
Menu

投稿日: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毎に作成しているのあれば、私的には、ムダに感じます。

問題の理由は、下記になります。

  1. フォーカスがあった場合の背景色は、各PGで同じな場合がほとんどである。
    1. 特別なPGの場合は、そこで対応すればよい。
  2. 新しい画面を作る時、毎回作成しなければいけない!
  3. 同じロジックを各PG毎で書いてあるので、下記の対応が非常に面倒である。
    1. お客さんから『もうすこし、薄い色にしてほしい~!』
    2. 作業的には!
      1. 検索で、探しながら、置換していく
      2. 一括で置換も出来ないこともないが、同じ色が別の意味で使われていた場合、これは無理である。又は、バグを作る原因になる。
  4. 今回は関係ありませんが、下記もムダに思えます。
    1. Handles TextBox5.Enter, TextBox6.Enter
      1. テキストボックスが増えたり減ったりすると、自分で書いたり、消したりする必要がある。
      2. 実は!
        • このような書き方をしているシステム会社は、非常に多いのです(笑)
          • このような場合、提案して、いつも変えさせていただいています(笑)
      3. これは、後日、新しいページで記載したいと思います。

これをカスタムコントロールに変えると!

具体的な作成方法は、次回としまして、利点のみをここでは明記します。

カスタムコントロールにて

  1. 初期値にてバックカラー(背景)を黄色に設定可能。
    1. ということは!
      1. フォームに配置しただけで、初期設定が黄色になる
      2. 各PGは、ロジックを書かなくてよい。
      3. PGもスッキリする!
  2. 例外PGの場合は、プロパティを設定(例えば赤)すればよい!
  3. 色の変更は、カスタムコントロールを修正するだけで、全てのPGの変わる!
  4. さらに、イベント明記も各PGで要らなくなる!
    1. これは、カスタムフォームとの関連があったりはしますが、とりあえず、よしとします。

こんなに利点があるのです!

これが、カスタムコントロールの利点になります。

でも、実際作ってみないとわかりませんよねwww^^;

ということで、次回は、この作り方を記載してみたいと思います。

あっ!

私は、ソフト会社(ディーラ)のカスタムコントロールを沢山作ってきました(笑)

今でも使ってくれています♪

ある部署(A)の依頼で、カスタムコントロールを作成しましたが、
よその部署(B)が、そのクラスをパチって、使っていました(笑)

これは、部署(B)から、他の開発依頼があった時判明しまして~!

『あの~、このクラス、私が作成したものですよ!』
『ただ、バチッた時期が悪いと思います』
『バージョンあ古すぎますwww』

って、教えてあげました(笑)
これが面白かったので、言いたかっただけですwww^^;

なぜ、カスタムコントロールを作るのか?

カスタムコントロールを使わないシステム会社もまだ多々あると思います。

では、なぜカスタムコントールを作成しないのか?

私が色々聞いた内容は、下記が、ほとんどでした。

  1. 今のままでも、お客さんには影響ないので、問題ない。
  2. 1PGは、そのPGを見るだけで判断したい。
  3. そもそも技術がない。でも、システムは作れる。
  4. クラスを管理(設計)できる人がいない。

あくまで、個人的になりますが、上の内容を分析すると!

たしかにカスタムコントロールを使用しなくて、システムは作成できますね!

但し!

  1. >>お客さんには影響ない
    1. 各PGに、同じロジックを書いているので、工数の無駄になって、少々お高くなるのでは?
  2. >>1PGは、そのPGを見るだけ
    1. これが意外と多いいのです。(笑)
    2. これをよく聞きCOBOLの文化を継承しているということになります。
    3. 実は・・・。関連会社のシステム担当者から以下をよく聞きます(笑)
      1. 上司は、自分より年上なので、昔の文化を押し付けられる。
      2. 大体、年配者の方は、このようなことを押し付けてくる。
      3. 個人的(システム担当者)には、共通部分は、共通化して、メインロジックに力を注ぎたい。
      4. ただ、上司がいるので、これが出来ない!
    4. などの、愚痴をよく聞かされますwww^^;(笑)
    5. 結論は、Visual Basic 6.0から、.netに変わった時、オブジェクト指向に取り残されたのが原因と思われます。(あくまで、主観的です(笑))
  3. >>そもそも技術がない。でも、システムは作れる。
    1. これは、どうしようもありませんね^^;
    2. というよりは、技術はやりながら解るはずなので、やろうとしていないだけだと思っています。
  4. >>クラスを管理(設計)できる
    1. 同じ部署や同じ課、又は、同じ会社で、基本的には、同じカスタムプロジェクトを使うことが理想です。
    2. なので、管理者がいるに越したことはありません。
    3. ただ、プロジェクトのよっては、カスタムコントロールのカスタマイズが必要いなることもよくあります。
      1. でも、これって、やり方なのです!
      2. オブジェクト指向を考えれば、直ぐに解決する問題になります。
    4. 設計者はいるに越したことはありませんが、これもより方ですね!
      1. 簡単なことから始めていけばいいのです!!

残っている懸案

分類懸案結論完了
javathrows ServletException, IOException 
これからの懸案一覧

今回のまとめ

本当は、こんな感じではなく、ListBoxのカスタムコントロールについて書く予定でしたが、流れが変わってしまいました(笑)

次回は、簡単なカスタムコントロールの作り方にしたいと思います♪

RTB カレンダー

27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
通販サイト(ECサイト)デモへ
ラテベラボブログへ
ナノシスへ

RTBアーカイブ(旧 Widget 版)

RTB ポストランキング (旧)

RTBアーカイブ(旧 Widget 版)