下面的代码可以粘贴到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;
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;
用这个Memo1.lines.add(Clipboard.AsText);直接就能粘了。但是换成了stringgrid,我应该怎么改啊
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;
是这样吗?那个行与列怎么定的。。
[与个 完整的给我好吗,,谢谢啦
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;
。。麻烦再帮改一下啦。。谢谢。。改好,马上结账
谢谢谢谢。。新手来的
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;