- 題名: スプレッドのショートカット
- 日時: 2004/10/05 10:53:59
- ID: 6494
- この記事の返信元:
- (なし)
- この記事への返信:
- [6495] Re[1]: スプレッドのショートカット2004/10/05 11:23:33
- ツリーを表示
■No6494に返信(こたろうさんの記事)
> スプレッド2.5を.NETに変換したのですが、ContextMenuプロパティーがありません。
> ショートカットメニューをどのように実現したらよいでしょうか?
ショートカットメニューとは、コンテキストメニューという解釈で宜しいでしょうか?
Spread 2.5は触ったことがないですが、MouseDown()イベントはありますよね?
あるのならば、ContextMenuクラスを使ってやれば良いと思われます。
以下は私のイメージです。
Source:--------------------------------------------------------------------
' プライベート メンバ として宣言
Private mContextMenu As ContextMenu
' コンストラクタでContextMenuを初期化
Private Sub New()
mContextMenu = New ContextMenu()
With mContextMenu.MenuItems
.Add("切り取り(&T)", AddressOf CutFromMenu)
.Add("コピー(&C)" , AddressOf CopyFromMenu)
.Add("貼り付け(&T)", AddressOf PasteFromMenu)
End With
End Sub
' マウスの右ボタンを押下した時にContextMenuを表示
Private Sub Spread1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Spread1.MouseDown
If e.Button = MouseButtons.Right Then
mContextMenu.Show(Spread1, New Point(e.X, e.Y))
End If
End Sub
Private Sub CutFromMenu(ByVal sender As Object, ByVal e As EventArgs)
'[切り取り(&T)]選択時の処理
End Sub
Private Sub CopyFromMenu(ByVal sender As Object, ByVal e As EventArgs)
'[コピー(&C)]選択時の処理
End Sub
Private Sub PasteFromMenu(ByVal sender As Object, ByVal e As EventArgs)
'[貼り付け(&P)]選択時の処理
End Sub
---------------------------------------------------------------------------
■No6497に返信(こたろうさんの記事)
> お返事ありがとうございます。
> さっそくやってみたのですが、確かにコンテキストメニューは表示されたのですが、
> 各メニューアイテムのEnableがFalseの状態になってます。
> MenuItem1.enable=Trueとやってみたのですが、だめでした。
それは、Spreadの上だからのような気がしますね。
何も考えずにやれば、
mContextMenu.MenuItem(0).Enabled = True
などとする必要はないはずだからです。
残念ながら、私の手元にSpread 2.5がないので何とも言えませんが...。
(Spread は嫌いでしてインストールしたくもなかったりします;)
ContextMenuプロパティがないのならば、競合してるとも思えないし。
試しにForm上に実装を変えてみてください。
それでも、メニューがグレーダウンするようだったら、実装方法に問題があるということになりますので。
Source:--------------------------------------------------------------------
' Formに実装する場合
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown
If e.Button = MouseButtons.Right Then
mContextMenu.Show(Me, New Point(e.X, e.Y))
End If
End Sub
---------------------------------------------------------------------------
# 実は、私もContextMenuを触ったのは最近が初めてだったりします < なんて無責任な orz
スプレッド2.5を.NETに変換したのですが、ContextMenuプロパティーがありません。
ショートカットメニューをどのように実現したらよいでしょうか?