TStringGrid多选的复制与拷贝

`

**uses** Clipbrd;
**function** StringGridSelectText(mStringGrid: TStringGrid): **string** ;
**var**
  I, J: Integer;
  S: **string** ;
**begin**
  Result := **_''_** ;
  **if** **not** Assigned(mStringGrid) **then** Exit;
  **for** J := mStringGrid.Selection.Top **to** mStringGrid.Selection.Bottom **do**
  **begin**
    S := **_''_** ;
    **for** I := mStringGrid.Selection.Left **to** mStringGrid.Selection.Right **do**
      S := S + **_#9_** + mStringGrid.Cells[I, J];
    Delete(S, **1** , **1** );
    Result := Result + S + **_#13#10_** ;
  **end** ;
**end** ; _{ StringGridSelectText }_
**procedure** StringGridPasteFromClipboard(mStringGrid: TStringGrid);
**var**
  vTextList: TStringList;
  vLineList: TStringList;
  I, J: Integer;
**begin**
  vTextList := TStringList.Create;
  vLineList := TStringList.Create;
  vLineList.Delimiter := **_#9_** ;
  **try**
    vTextList.Text := Clipboard.AsText;
    **for** J := **0** **to** vTextList.Count - **1** **do**
    **begin**
      **if** J + mStringGrid.Row >= mStringGrid.RowCount **then** Break;
      vLineList.DelimitedText := vTextList[J];
      **for** I := **0** **to** vLineList.Count - **1** **do**
      **begin**
        **if** I + mStringGrid.Col >= mStringGrid.ColCount **then** Break;
        mStringGrid.Cells[I + mStringGrid.Col, J + mStringGrid.Row] := vLineList[I];
      **end** ;
    **end** ;
  **finally**
    vTextList.Free;
    vLineList.Free;
  **end** ;
**end** ; _{ StringGridPasteFromClipboard }_
**procedure** StringGridCopyToClipboard(mStringGrid: TStringGrid);
**begin**
  Clipboard.AsText := StringGridSelectText(mStringGrid);
**end** ; _{ StringGridCopyToClipboard }_
**procedure** TForm1.MenuItemCopyClick(Sender: TObject);
**begin**
  StringGridCopyToClipboard(StringGrid1);
**end** ;
**procedure** TForm1.MenuItemPasteClick(Sender: TObject);
**begin**
  StringGridPasteFromClipboard(StringGrid1);
**end** ;
**procedure** TForm1.StringGrid1KeyDown(Sender: TObject; **var** Key: Word;
  Shift: TShiftState);
**begin**
  **if** ssCtrl **in** Shift **then**
    **case** Key **of**
      Ord( ** _'C'_** ): StringGridCopyToClipboard(TStringGrid(Sender));
      Ord( ** _'V'_** ): StringGridPasteFromClipboard(TStringGrid(Sender));
    **end** ;
**end** ;

`

Published At
Categories with Web编程
comments powered by Disqus