Copiar todos os registros de uma tabela para o Clipboard no Delphi
Inclua na seção uses:Clipbrd
Problema:
Gostaria de colocar em minha aplicação o recurso de copiar
todos os registros de uma tabela para a área de transferência,
permitindo ao usuário colar estes dados em outro
aplicativo (ex: MS-Word). Isto é possível?
Solução:
Sim. Siga os passos abaixo:
- Crie seu form normalmente, colocando DataSource, Table e
demais componentes;
- Coloque um botão e no evento OnClick deste botão coloque
o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
const
SeparadorCampoValor = ': ';
SeparadorCampo = #13#10; { Quebra de linha }
SeparadorRegistro = '===========' + #13#10;
var
S: string;
I: integer;
begin
S := '';
Table1.First;
while not Table1.EOF do begin
for I := 0 to Table1.FieldCount -1 do
S := S + Table1.Fields[I].FieldName + SeparadorCampoValor +
Table1.Fields[I].AsString + SeparadorCampo;
S := S + SeparadorRegistro;
Table1.Next;
end;
Clipboard.AsText := S;
end;
Para testar:
- Execute este aplicativo;
- Clique no botão;
- Vá em outro aplicativo (ex: MS-Word) e mande colar (Ctrl+V).
Observações
CUIDADO! Não use este recurso com tabelas grandes, pois poderá usar memória demasiadamente. No teste que fiz, o tamanho da string S atingiu 20K e funcionou normalmente. Mas isto pode variar de uma máquina para outra.