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などの専用ソフトを使えば、もっと凝ったデザインのボタンにできるでしょう。

