- PR -

SPREAD からのコピーについて

1
投稿者投稿内容
りょう
会議室デビュー日: 2003/02/18
投稿数: 5
お住まい・勤務地: 島根県
投稿日時: 2007-12-27 15:00
いつもお世話になっております。

SPREADに関してご教授いただけるでしょうか。
基本的な事かも知れませんが、調べても解決できなかったため
ご質問させて頂ければと思います。
宜しくお願い致しますm(_ _)m

現在、SPREADを利用し、DBから
データ検索・抽出を行うツールを作成しております。
環境は以下のようになっております。

===========
開発環境:MS Visual Studio 2005
開発言語:C#
使用ツール:SPREAD FOR .NET 2.5j Windows Forms ed.
利用DB :DB2
OS: Windows XP Pro
===========

基本的には、画面上で検索条件を入力し
その検索結果を同じ画面上のSPREADに表示する。
といったような仕様です。

そこで、SPREAD上に表示した検索結果(DBから抽出したデータ)を
メモ帳等の他アプリにペーストできるよう
マウス等で選択しコピーする機能を実現したいと考えております。

ただし、検索結果の値をSPREAD上で編集は出来ないようにしたいです。


実現にはSPREADのプロパティ等の設定とは思いますが、
 .Locked
 .Protect
あたりのプロパティをいじってみましたが上手く行きません。

・lockプロパティで編集不可となるが、SPREADのセルに
 マウスカーソルを入れることが出来ない
・lockプロパティ:false やProtectプロパティでマウスカーソルを
 セルに入れることが出来るが、SPREADで表示した値を変更出来てしまう

といったようになってしまいます。

基本的な事とは思いますが、ご教授頂ければと思います。
宜しくお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-12-27 15:51
SheetのOperationModeプロパティをRowModeに設定していませんか?
何故かRowModeにすると[Ctrl + C]とかが無効になります。
私の場合、しょうがないのでKeyDownイベントで対応しました。

コード:


private void fpSpread1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.C:
if (e.Control == true && this.fpSpread1.ActiveSheet.ActiveCell != null)
{
Clipboard.SetDataObject(this.fpSpread1.ActiveSheet.ActiveCell.Text, true);
}
break;
}
}




[ メッセージ編集済み 編集者: burton999 編集日時 2007-12-27 15:54 ]
りょう
会議室デビュー日: 2003/02/18
投稿数: 5
お住まい・勤務地: 島根県
投稿日時: 2007-12-27 16:50
ご回答ありがとうございます。
ご指摘の通り、OperationModeプロパティがRowModeとなっておりました。
教えていただいた内容で、コピー可能となりました!

ただ、可能であればユーザー利用を考えて
マウスの右クリックメニュー(OSの機能でしょうか)の
コピーが利用できればと思っております。
その場合やはり、セルにマウスカーソルを入れれる様にする必要があり
それにはOperationModeをRowMode以外にする必要があるでしょうか、、、。

RowMode以外でも試してはみましたが、
 ・セルにカーソルが入れられない 
もしくは、
 ・セルにカーソルを入れれるようにすると表示データ編集可となってしまう
現象に陥ってしまいます。

そもそも実現は難しいのでしょうか。
わがままを言うようで申し訳ありませんが、
もし分かる方がいらっしゃいましたら教えて頂ければと思います。

宜しくお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-12-27 17:42
コンテキストメニューは自力で実装します。手順は以下です。

1.フォームに「System.Windows.Forms.ContextMenuStrip」を貼り付けます。
2.デザイナで「コピー」という「System.Windows.Forms.ToolStripMenuItem」を追加します。
3.ToolStripMenuItemのクリックイベントに先ほどのコピーのコードを記述します。
4.SPREADのContextMenuStripプロパティに貼り付けたContextMenuStripを設定します。
りょう
会議室デビュー日: 2003/02/18
投稿数: 5
お住まい・勤務地: 島根県
投稿日時: 2007-12-27 20:31
burton999様

何度もご回答有難うございます。
無事実現する事ができました!!

自分の知識不足を痛感するとともに
ご教授いただいたことを感謝しております。

よりスキルアップを目指して行こうと思いますので
また質問させていただくこともあるかと思いますが
今後とも宜しくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)