掲示板お問い合わせランダムジャンプ



この広告は30日以上更新がないブログに表示されております。 新しい記事を書くことで広告を消すことができます。

Top Index

2008年11月22日
CVSを使ってVBのソースコードのバージョン管理をする!(備忘録)
今回はソースコードのバージョン管理に便利なCVSの利用方法について書こうと思います。

このツール(バージョン管理ソフト)を要約すると、
  過去のコードと現在のコードの変更箇所が一目でわかる
ツールであるといえます。

このため、「複数人でのコーディング」や、「ソースコードを旧バージョンにロールバックする」ことが簡単に行えます。

こんなに便利な無償のツールなのに、インストール方法の解説サイトが少ない(※1、2)ような気がしましたので備忘録を兼ねてまとめてみました。

※1 CVS自体は有名でCVSを扱った書籍はあるにはあるのですが、古い技術のせいか、今ではほとんど出回っておりません。
CVS以外にはSubVersion、Visual SourceSafe、Gitなどが有名です。
なお、Visual SourceSafe はMicrosoft製でVisualStudioと相性がよいですが、有償。

※2 利用方法についてもあまりよいページがない気がような?まぁ、用語さえ覚えれば説明不要なぐらい簡単ですけどね。


#2011/7/18追記
新しくバージョン管理をするならSVNを使用することをお勧めします。
以下、SVNを選ぶ理由
・VisualStudioとの統合ができる(Professional以上が必要)
 重要。
 TortoiseCVSがあるとはいえ、統合された環境には適わない。
 ファイルの追加漏れなども防ぎやすい。
・ソリューション、プロジェクト単位での変更履歴が取得できる。
 CVSではファイル単位しかできなかった気がする。
 これのおかげでタグがなくても、ある程度過去バージョンのデータを呼び出す目処がつく。
・リバート(元に戻す)ができる
 「編集内容を破棄したいファイルを削除してからCVSでアップデート」
 というめんどくさい作業が一発で完了する。
・ファイルのリネームができる
 重要。
 クラスの名前を適切なものに変えたいと思っても
 CVSでは別ファイル化(過去の編集履歴を捨てる)する必要があった。
 スペルミス修正やリファクタリングする際にないととっても困る。
・環境の準備が楽
 ファイルサーバーであれば何でもいける。
 サーバーでなくても、個人PCの中にリポジトリを作ることもできる。

続きを読む ...
 
[ 投稿者:mk3008 at 20:54 | 設計メモ | コメント(0) | トラックバック(0) ]

2008年11月12日
MDI子フォーム上でCtl+C、Ctl+X、Ctl+Vなどが効かない場合の原因
VisaulStadio2008 Standard SP1 にて検証。
ちなみにこの現象はMDIで起きやすいですが、SDIでも再現は可能です。

■症状
MDI子フォームでコピー、カット、ペーストのショートカットキーを押しても、
処理が実行されない。

同様の症状を検索してみましたが、それっぽいトラブルは他では発生していないのか、
あまり見当たりません。
VBレスキュー花ちゃんの掲示板に質問を投げかけている人がいるので、私の環境固有の問題でもないようです。


■再現手順 その1
1.WindowsFormアプリケーションを作成。
2.Form1にテキストボックスを1つ追加。
3.プロジェクトを右クリックして、Windowsフォームを選択。MDI親フォームを選択して追加する。
4.ツールストリップメニューにボタンを追加し、クリックイベントに以下のコードを記述する。
Dim ChildForm As New Form1
ChildForm.MdiParent = Me
ChildForm.Show()
5.スタートアップフォームをMDIParent1に変更。
6.デバッグを開始。
7.MDI親フォームが起動したら、[4]で追加したボタンをクリックしMDI子フォームを開く。
8.MDI子フォームにあるテキストボックスにフォーカスを当て、
 Ctl+C、Ctl+X、Ctl+Vなどのショートカットキーを実行する。
 この際、処理が走らない。

■再現手順 その2
1.WindowsFormアプリケーションを作成。
2.Form1にテキストボックスを1つ追加。
3.プロジェクトを右クリックして、Windowsフォームを選択。MDI親フォームを選択して追加する。
4.MDI親フォームのMDIコンテナ上にテキストボックスを追加する。
5.スタートアップフォームをMDIParent1に変更。
6.デバッグを開始。
7.MDI親フォームが起動したら、[4]で追加したテキストボックスにフォーカスを当て、
 Ctl+C、Ctl+X、Ctl+Vなどのショートカットキーを実行する。
 この際、処理が走らない。
※つまり、MDI子フォームのプロパティ設定は関係ないことになる。

■動作しない理由?
MID子フォームのKeyPreviewプロパティをTrueにして、KeyDownイベントをトラップしてみると変な現象を見ることができます。

Ctl+Cキーを押下すると本来であればCtlキーとCキーが押されていることを検知できるのですが、これをMDI子フォームで同イベントをトラップすると
・Ctlキーが押されていることを検知できます。
・Cキーが押されていることを検知できません。
ですが、Ctl+Alt+Cキーを押下すると、
・Ctlキーが押されていることを検知できます。
・Cキーが押されていることを検知できます。
となります、
※検知はできますが、コピー処理は発生しません。

ということはCtl+○キーが検知できないのか?と推測してみますが、Ctl+Eキーなどのように予約されていない組み合わせであれば
・Ctlキーが押されていることを検知できます。
・Eキーが押されていることを検知できます。
検知が可能です。

どうも予約されているキーの組み合わせが発生しないようになっている模様。

■対処、というか突然解決
こうもうまくいかないと仕様っぽいですが、かといってショットカットキーが効かないと不便です。
と思ったのですが・・・、ふと考えてみると、MDI親フォームのデフォルトにはMenuStripがデフォルトで付いています。

そうです、MenuStripもCtlキーをつかったショートカットキー(たとえば保存はCtl+Sキーなど)が利用できるため、競合している可能性があるのです。

MenuStripの「編集(E)」を見てみてください。Ctl+Cキーなどメジャーなショートカットキーが登録されていますね。
つまり、テキストボックスにショートカットキーが飛ぶ前にMenuStripがトラップしていることが原因だったのです。

では、ためしにMenuStripの「編集(E)を削除してから、再度実行してみてください。
正常に動作しました^^;

追記
さっそく上述の掲示板に返信してみようとしたのですが、質問者がクローズしたためかレスがつけられませんでした。残念!
[ 投稿者:mk3008 at 00:24 | フォームTips | コメント(0) | トラックバック(0) ]