業務アプリで使用できそうなものを五月雨に記録しておく。
まとまるまで待っていると忘れてしまうために・・・。ww
なお、このブログ内に記載しているソースの転載・転用については何も縛りはありません。
ご使用の状況の如何に問わず、作者たる当方は結果についてその責任を一切負いません。ご使用は自己責任の範囲でお願いいたします。
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【RGB値を指定して色を指定する】
1 2 | '定数として宣言する場合 Public ColorCode As System.Drawing.Color = System.Drawing.Color.FromArgb(255, 255, 192) |
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【構造体の宣言】
VB6をやっていた頃はもっと簡単に宣言できましたが、.NETになってこのように表記になりました。
1 2 3 4 5 6 7 8 | Public Structure [構造体宣言名] Dim [宣言A] As [型] 例: Dim USERID As String Dim USERPASS As String End Structure Public [利用する時の構造体名] As [構造体宣言名] |
※実際に利用した時の例
データベース系の情報を格納するサンプル
1 2 3 4 5 6 7 8 9 | Public Structure _DB_INFO Dim DB_USERID As String Dim DB_USERPASS As String End Structure Public DB_INFO As _DB_INFO 利用するときは DB_INFO.DB_USERID = "hoge" |
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【ファンクションキーの有効・無効を制御する】
業務用アプリを作成している時、特定のキーに機能を持たせてショートカットを図る方法は昔からあります。
その代表例としては「ファンクションキー(F1~F12)」の利用があります。
状況に応じてON・OFFを制御するのはいちいちめんどくさいので単純にON・OFFの制御を行うロジックを組んでみました。
前提条件としてフォーム上にボタンをF1~F12分まで作成し、各ボタンに「Button_F*」(*は番号)を作成しておく。
スイッチの定義
‘ファンクションキーのON・OFFの組み合わせを登録(定数化の例)
‘左から順に「F1」を表し、「-」は機能の無い区切り文字(わかりやすくするもの)です。
‘ONにしたいキーの場所に1を立てる。OFFにしたい場合は0を立てる。
1 2 3 4 5 6 7 | #Region "F12モード" Public Structure FunctionMode12 Const F001 As String = "0000-0000-0000" 'すべてのボタンを無効 Const F002 As String = "1000-0000-0000" '[F1]のみ有効 Const F003 As String = "1000-0000-0001" '[F1]と[F12]を有効 End Structure #End Region |
宣言
1 2 | 'ボタンコントロール配列のフィールドを作成 Private FuncButtons() As System.Windows.Forms.Button |
フォームロード時の処理
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 | '-------------------------------------------------------------------------------- 'フォームロード '-------------------------------------------------------------------------------- Private Sub Form_Load(sender As System. Object , e As System.EventArgs) Handles MyBase .Load With Me 'ボタンコントロール配列の作成 .FuncButtons = New System.Windows.Forms.Button(11) {} 'ボタンコントロールの配列にすでに作成されているインスタンスを代入 .FuncButtons(0) = .Button_F1 .FuncButtons(1) = .Button_F2 .FuncButtons(2) = .Button_F3 .FuncButtons(3) = .Button_F4 .FuncButtons(4) = .Button_F5 .FuncButtons(5) = .Button_F6 .FuncButtons(6) = .Button_F7 .FuncButtons(7) = .Button_F8 .FuncButtons(8) = .Button_F9 .FuncButtons(9) = .Button_F10 .FuncButtons(10) = .Button_F11 .FuncButtons(11) = .Button_F12 End With End Sub |
関数の定義
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 31 32 33 34 35 36 37 38 39 40 41 42 | ''' <summary> ''' ファンクションキーの有効無効制御イベント(F12有効モード) ''' </summary> ''' <param name="strFCode">ファンクション文字列(12桁)</param> ''' <remarks></remarks> Public Sub BaseForm12_Function( ByVal strFCode As String ) Dim intI As Integer = 0 Dim intA As Integer = 0 If Len(strFCode) <> 14 Then MessageBox.Show( "ファンクション文字列が不正です。" & Chr(13) & "終了いたします。" , _ "BaseForm_Functionエラー" , MessageBoxButtons.OK, MessageBoxIcon. Error ) End End If For intI = 1 To 14 '「-」を除外 Select Case intI Case 1 To 4 intA = 1 Case 5 To 9 intA = 2 Case 10 To 14 intA = 3 End Select 'チェック If Mid(strFCode, intI, 1) = "0" Then Me .FuncButtons(intI - intA).Enabled = False ElseIf Mid(strFCode, intI, 1) = "1" Then Me .FuncButtons(intI - intA).Enabled = True ElseIf Mid(strFCode, intI, 1) = "-" Then '「-」は区切り記号の為に何もしない Else Me .FuncButtons(intI - intA).Enabled = False End If Next End Sub |
実際の使用例
実際に利用する場合はCall文で呼び出せば反映します。
場合に応じて有効無効を定義する型を登録して場面に応じて呼び出して利用できればいいと思います。
1 | Call BaseForm12_Function(FunctionMode12.F001) |
応用利用
業務アプリでは同じような構成(型)を作って使いまわす方が効率的です。
このファンクションキーの機能も各フォームにいちいち貼り付けて機能を追加するにはめんどくさいです。
しかも機能を拡張する場合など、作成済のフォームを一つ一つ修正する必要が出てきます。
基本的な共通機能を持ったベースフォームを作成して機能を盛り込むことをお勧めします。
次回はベースフォームの作成について記述します。