お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"StringGridからクリップボードにコピー"





  StringGridの矩形領域のデータをクリップボードにコピーします。Excelへの
転送を想定しています。当然 Clipbrd ユニットをuseすることが必要です。 動
作チェックは Delphi 3 のみですが、Delphi 2 以降なら問題ないと思います。

{---------------------------------------------------------------
StringGridのデータをクリップボードにコピーするための汎用手続き
  エクセルへのデータの転送を想定している。
  カラム間はTABで区切り、行間はCRLFで区切る。
  Col1,Row1 と Col2,Row2 は書き出す領域の左上と右下のセルの番地
----------------------------------------------------------------}
procedure CopyToClipboardFromStringGrid(SGrid : TStringGrid;
                                        Col1, Row1, Col2, Row2 : integer);
const
  CRLF = #13#10;
  Tab  = #9;
var
  r,c : integer;
  S   : string;
begin
  S := '';
  {指定されたセル番地のチェック}
  {矛盾した指定 or 明らかに範囲外の指定のときはクリップボードを空にする}
  if (Col1 > Col2) or (Row1 > Row2) or
     (Col2 < 0 )   or (Row2 < 0)    or
     (Col1 >= SGrid.ColCount ) or
     (Row1 >= SGrid.RowCount) then begin
    Clipboard.AsText := S;
    exit;
  end;

  {範囲がはみ出しているときは範囲内に調節する}
  if Col1 < 0 then Col1 := 0;
  if Row1 < 0 then Row1 := 0;
  if Col2 >= SGrid.ColCount then Col2 := SGrid.ColCount - 1;
  if Row2 >= SGrid.ColCount then Row2 := SGrid.RowCount - 1;

  {ここからがデータの転送処理}
  for r := Row1 to Row2 do begin
    for c := Col1 to Col2 - 1 do
      S := S + SGrid.Cells[c, r] + Tab;
    S := S + SGrid.Cells[Col2, r] + CRLF;
  end;
  Clipboard.AsText := S;
end;

                                                            ひの


Original document by ひの            氏 ID:(GFD03044)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum