|
|
||||
Tips > |
|||||
StringGrid の選択セルをクリップボードへコピー |
更新 : 2010/06/25 |
||||
|
|
||
解説: StringGrid で選択した複数セルのデータを二次活用したいときがあります。方法としては、データを変数に代入して利用する、コピーして貼り付ける、などが考えられます。 StringGrid のデータをそのままの形で、変数に保存したり、クリップボードにコピーするには、どうすればいいでしょう? クリップボードは、他のアプリとの関係もありますので、変数代わりに使うのはあまりお勧めしません。今回は、参考に見ておいてください。 使用例: アプリケーションを起動して、マウスでセル範囲を指定してください。 Button1 をクリックすると、選択した複数セルのデータを変数に格納した後、クリップボードにコピーしています。 コンポーネントは、 StringGrid と Button を適当に配置するだけです。 StringGrid1 には、コピーの確認ができるように適当なデータを入力しておいてください。 Button1 の OnClick イベントで、選択されたセル範囲を Selection プロパティで取得します。 範囲内のデータを再利用できる形(セル間のタブと改行を挿入)で、変数に代入していきます。 変数への代入が済んだら、クリップボードへコピーします。 #include <clipbrd.hpp> // add //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TGridRect rect = StringGrid1->Selection; AnsiString data = ""; // 変数に代入 for (int row = rect.Top; row <= rect.Bottom; row++) { for (int col = rect.Left; col <= rect.Right; col++) { data += StringGrid1->Cells[col][row]; // 最後の列以外には "\t" を入れる if (col < rect.Right) data += "\t"; } // 最後の行以外には "\r\n" を入れる if (row < rect.Bottom) data += "\r\n"; } // クリップボードにコピー Clipboard()->SetTextBuf(data.c_str()); } //------------------------------------------------------------------- |