CapsLockの制御
PlusPak for Windows Forms 5.0Jの面白いコントロールの1つに、「GcKeyLock」コントロールがあります。
このコントロールは、キーボードにある「CapsLock」「NumLock」「ScrollLock」の3つのキーのオン・オフをプログラムから制御します。昔、N88Basicでも制御できましたが、PlusPak for Windows Forms 5.0Jではこの機能をコントロールにまとめました。
各キーの制御は、それぞれ「CapsLock」「NumLock」「ScrollLock」プロパティを使用します。設定値はいずれも論理値で、「True」でオン、「False」でオフになります。
このプログラムでは、TextBoxとGcLabelを配置し、次のような機能を組み込んでみました。
- TextBoxをクリックすると、CapsLockがオンになる
- フォームをクリックすると、CapsLockがオフになる
- GcLabelをクリックすると、CapsLockのオン・オフを設定できる
- CapsLockがオンになると、GcLabelの背景がグラデーションで塗りつぶされる
- CapsLockがオフの時は、GcLabelの背景と文字がグレー表示になる
PlusPak for Windows Forms 5.0Jの各コントロールは、基本的にVS標準コントロールと同じようなイベントハンドラを使うことができます。そこで、チェックボックスをチェックしてハート型のボタンを押すと、テキストボックスに入力した文字を メッセージボックスで表示する機能も組み込みました。
また、コードからグラデーションを設定する場合は、GradientEffectクラスのコンストラクタを使用してインスタンスを作成し、各コントロールのGradientEffectプロパティに設定します。コンストラクタでは、グラデーションの方向と開始・終了色を引数に設定します。
Private Sub GcShapeButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcShapeButton1.Click If Me.GcCheckBox1.Checked = True Then MessageBox.Show(Me.TextBox1.Text) End If End Sub Private Sub TextBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click Me.GcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.On Me.GcLabel2.ForeColor = Color.Black Me.GcLabel2.GradientEffect = New GrapeCity.Win.Common.GradientEffect _ (GrapeCity.Win.Common.GradientStyle.Horizontal, _ GrapeCity.Win.Common.GradientDirection.Forward, _ Color.MistyRose, Color.LightCoral) End Sub Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click Me.GcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.Off Me.GcLabel2.ForeColor = SystemColors.ControlDark Me.GcLabel2.GradientEffect = Nothing End Sub Private Sub GcLabel2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcLabel2.Click If Me.GcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.Off Then Me.GcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.On Me.GcLabel2.ForeColor = Color.Black Me.GcLabel2.GradientEffect = New GrapeCity.Win.Common.GradientEffect _ (GrapeCity.Win.Common.GradientStyle.Horizontal, _ GrapeCity.Win.Common.GradientDirection.Center, _ Color.MistyRose, Color.LightCoral) Else Me.GcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.Off Me.GcLabel2.ForeColor = SystemColors.ControlDark Me.GcLabel2.GradientEffect = Nothing End If End Sub
private void gcShapeButton1_Click(object sender, EventArgs e) { if(gcCheckBox1.Checked == true){ MessageBox.Show(textBox1.Text); } } private void gcLabel2_Click(object sender, EventArgs e) { if(gcKeyLock1.CapsLock == GrapeCity.Win.Components.LockKeyStatus.Off){ gcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.On; gcLabel2.ForeColor = Color.Black; gcLabel2.GradientEffect = new GrapeCity.Win.Common.GradientEffect (GrapeCity.Win.Common.GradientStyle.Horizontal, GrapeCity.Win.Common.GradientDirection.Center, Color.MistyRose, Color.LightCoral); }else{ gcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.Off; gcLabel2.ForeColor = SystemColors.ControlDark; gcLabel2.GradientEffect = null; } } private void textBox1_Click(object sender, EventArgs e) { gcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.On; gcLabel2.ForeColor = Color.Black; gcLabel2.GradientEffect = new GrapeCity.Win.Common.GradientEffect (GrapeCity.Win.Common.GradientStyle.Horizontal, GrapeCity.Win.Common.GradientDirection.Forward, Color.MistyRose, Color.LightCoral); } private void Form1_Click(object sender, EventArgs e) { gcKeyLock1.CapsLock = GrapeCity.Win.Components.LockKeyStatus.Off; gcLabel2.ForeColor = SystemColors.ControlDark; gcLabel2.GradientEffect = null; }
まとめ
今回使用したPlusPakのコントロールは4つだけですが、これだけでも雰囲気の違うフォームがデザインできたと思います。CapsLockをプログラム側でオンオフできる機能は、英字入力を多用するアプリケーションでは、かなり便利な機能だと言えます。
今回は、独自グラフィックス作成にPowerPointを使用しましたが、PhotoShopなどの専用ソフトを使えば、もっと凝ったデザインのボタンにできるでしょう。