Fórum salvar arquivo da area de transferencia no word automaticamente, #384645
26/08/2010
0
SeparadorCampoValor = ': ';
SeparadorCampo = #13#10; { Quebra de linha }
SeparadorRegistro = '===========' + #13#10;
var
S: string;
I: integer; begin S := '';
dm.qry_ajudadv.First;
while not DM.qry_ajudadv.EOF do begin
for I := 0 to Dm.qry_ajudadv.FieldCount -1 do
S := S + DM.qry_ajudadv.Fields[I].FieldName + SeparadorCampoValor+
DM.qry_ajudadv.Fields[I].AsString + separadorcampo ;
S := S + SeparadorRegistro;
DM.qry_ajudadv.Next;
end;
Clipboard.AsText := S; end; agradeço a ajuda dos companheiros. geraldo leal
Geraldo Leal
Curtir tópico
+ 0Posts
26/08/2010
Wilson Junior
Const
SeparadorCampoValor = ': ';
SeparadorCampo = #13#10; { Quebra de linha }
SeparadorRegistro = '===========' + #13#10;
var
S: string;
I: integer;
clipTexto: TClipBoard;
begin
S := '';
dm.qry_ajudadv.First;
while not DM.qry_ajudadv.EOF do begin
for I := 0 to Dm.qry_ajudadv.FieldCount -1 do
S := S + DM.qry_ajudadv.Fields[I].FieldName + SeparadorCampoValor+
DM.qry_ajudadv.Fields[I].AsString + separadorcampo ;
S := S + SeparadorRegistro;
DM.qry_ajudadv.Next;
end;
clipTexto := TClipBoard.Create;
clipTexto.AsText := S;
clipTexto.Free;
end;
No uses acrescente Clipbrd.
Espero ter colaborado.
Gostei + 0
26/08/2010
Geraldo Leal
const
SeparadorCampoValor = ': ';
SeparadorCampo = #13#10; // Quebra de linha }
SeparadorRegistro = '===========' + #13#10;
var
S: string;
I: integer;
clipTexto: TClipBoard;
begin
WinExec ('C:\Arquivos de programas\Microsoft Office\Office\winWord',SW_Show);// este aqui estava faltando
S := '';
dm.qry_ajudadv.First;
while not DM.qry_ajudadv.EOF do begin
for I := 0 to Dm.qry_ajudadv.FieldCount -1 do
S := S + DM.qry_ajudadv.Fields[I].FieldName + SeparadorCampoValor+
DM.qry_ajudadv.Fields[I].AsString + separadorcampo ;
S := S + SeparadorRegistro;
DM.qry_ajudadv.Next;
end;
clipTexto := TClipBoard.Create;
clipTexto.AsText := S;
clipTexto.Free;
end; obs. ele abre o word, e cola manualmente, não vem colado. outra coisa é que está vindo todos os campos da query, como faço pra vir somente os campos do dbgrid. tentei colocar itemfield, mais não compilou. obrigado pela atençaõ sucesso geraldo leal
Gostei + 0
26/08/2010
Emerson Nascimento
procedure TForm12.Button1Click(Sender: TObject);
const
SeparadorCampoValor = ': ';
SeparadorCampo = #13#10; // Quebra de linha }
SeparadorRegistro = '===========' + #13#10;
var
MSWord: OleVariant; //cria o objeto
S: string;
I: integer;
begin
MSWord := CreateOleObject('Word.Basic'); //cria o objeto
MSWord.FileNew;
// configura a barra de progresso (coloquei somente pra 'enfeitar')
dm.qry_ajudadv.Last;// uso clientdataset e precisei disso para obter o num. de registros
Gauge1.MaxValue := dm.qry_ajudadv.RecordCount;
Gauge1.Progress := 0;
// fim de 'configura a barra de progresso'
//desliga os controles visuais melhora a performance, pois não há refresh na tela
dm.qry_ajudadv.DisableControls;
dm.qry_ajudadv.First;
while not DM.qry_ajudadv.EOF do
begin
Application.ProcessMessages;// para não congelar a aplicação enquanto varre a tabela
S := '';
// 'monta' um registro
for I := 0 to dbGridAjuda.FieldCount-1 do
s := s + dbGridAjuda.Fields[i].Name + SeparadorCampoValor +
dbGridAjuda.Fields[i].AsString + separadorcampo ;
// coloca o registro no word
MSWord.Insert(S + SeparadorRegistro);
DM.qry_ajudadv.Next;
Gauge1.AddProgress(1); // incrementa a barra de progresso
end;
dm.qry_ajudadv.EnableControls; //reabilita os controles visuais
MSWord.AppShow;// 'mostra' o word, com os registros já inseridos
Gauge1.Progress := 0; // reseta a barra de progresso
end;
obs.:
1. não precisa copiar nada para a área de transferência.
2. são 'importados' somente os campos exibidos na grade.
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
26/08/2010
Geraldo Leal
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.