ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


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());
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.