下面的代码可以粘贴到Memo1中,但是我想粘贴到TStringGrid中,应该怎么做啊。。
procedure TShipFrm.BtnInputClick(Sender: TObject);
var
  Clipboardc: TClipboard;
begin
  Clipboardc := TClipboard.Create;
  try
    if Clipboard.HasFormat(CF_text) then
    begin      Memo1.lines.add(Clipboard.AsText);
      Clipboard.Clear;
    end;
  finally
    Clipboardc.Free;
  end;
end;

解决方案 »

  1.   

    自己写代码往tstringgrid里加啊,那东东本来就是stringgrid,不是剪贴板grid
      

  2.   

    StringGrid1.Cells[x,y] :=xxxxxxxxxxxxx
      

  3.   


    用这个Memo1.lines.add(Clipboard.AsText);直接就能粘了。但是换成了stringgrid,我应该怎么改啊
      

  4.   

    StringGrid1.Cells[x,y] :=Clipboard.AsText
      

  5.   

    下面的代码可以粘贴到Memo1中,但是我想粘贴到TStringGrid中,应该怎么做啊。。
    procedure TShipFrm.BtnInputClick(Sender: TObject);
    var
      Clipboardc: TClipboard;
    begin
      Clipboardc := TClipboard.Create;
      try
      if Clipboard.HasFormat(CF_text) then
      begin  StringGrid1.Cells[x,y] :=Clipboard.AsText
      Clipboard.Clear;
      end;
      finally
      Clipboardc.Free;
      end;
    end; 
    是这样吗?那个行与列怎么定的。。
    [与个 完整的给我好吗,,谢谢啦
      

  6.   


    var
      Clipboardc: TClipboard;
      row, col: Integer;
      sLine, sWord: TStringList;
      s: string;
    begin
      Clipboardc := TClipboard.Create;
      sLine := TStringList.Create;
      sWord := TStringList.Create;
      try
      if Clipboardc.HasFormat(CF_text) then
      begin
        
        s := Clipboardc.AsText;
        sLine.Text := S;
        strngrd1.RowCount := sLine.Count + 1;
        for Row := 0 to sLine.Count - 1 do
        begin
          s := sLine.Strings[Row];
          //如果源表格中没有空值,可以按照下面方法解析,如果有空值,就直接解析
          //字符串,把s定义成widestring类型,然后通过pos(#9, s)找到#9的位置逐个解析
          sWord.Clear;
          sWord.Delimiter := #9;
          sWord.DelimitedText := s;  
          if strngrd1.ColCount < sWord.Count + 1 then
            strngrd1.ColCount := sWord.Count + 1;
          for col := 0 to sWord.Count - 1 do
            strngrd1.Cells[col + 1, row + 1] := sWord.Strings[col];
        end;
      end;
      finally
        Clipboardc.Free;
        sLine.Free;
        sWord.Free;
      end;
    end;
      

  7.   

    有空值的。怎么通过pos(#9, s)找到#9的位置逐个解析
    。。麻烦再帮改一下啦。。谢谢。。改好,马上结账
    谢谢谢谢。。新手来的
      

  8.   

    Clipboard 不用创建 引用以后可以直接使用
      

  9.   


    var
      row, col, i, len: Integer;
      sLine, sWord: TStringList;
      s: string;
      s2: WideString;
    begin  sLine := TStringList.Create;
      sWord := TStringList.Create;
      try
      if Clipboard.HasFormat(CF_text) then
      begin
        
        s := Clipboard.AsText;
        sLine.Text := S;
        strngrd1.RowCount := sLine.Count + 1;
        for Row := 0 to sLine.Count - 1 do
        begin
          s2 := sLine.Strings[Row];
          len := Length(s2);
          
          col := 1;
          while len > 0 do
          begin
            i := Pos(#9, s2);
            if i > 0 then    
              s := Copy(s2, 1, i - 1)
            else
              s := s2;
            if col >= strngrd1.ColCount then
              strngrd1.ColCount := strngrd1.ColCount + 1; 
            
            strngrd1.Cells[col, row + 1] := s;
            if i <= 0 then
              Break;
            Inc(col);
            s2 := Copy(s2, i + 1, len - i);
            len := Length(s2);
          end;
        end;
      end;
      finally
        sLine.Free;
        sWord.Free;
      end;
    end;
      

  10.   

    可以像楼上讲的,逐个添加到Grid,也可以先处理好字符串再添加