Blob para ClipBoard.
Olá galera,
como faço para mandar para a área de transferência um texto que está em um campo blob?
Se alguém souber agradeço desde já.
como faço para mandar para a área de transferência um texto que está em um campo blob?
Se alguém souber agradeço desde já.
Weliton Oliveira
Curtidas 0
Respostas
Adriano Santos
30/07/2007
Isso deve resolver:
[quote:203236b7ac=´Copia para a memória´]
[/quote:203236b7ac]
[quote:203236b7ac=´Cola da memória´]
[/quote:203236b7ac]
[quote:203236b7ac=´Copia para a memória´]
procedure TForm1.Button2Click(Sender: TObject); begin DBMemo1.SelectAll; DBMemo1.CopyToClipboard; end;
[/quote:203236b7ac]
[quote:203236b7ac=´Cola da memória´]
procedure TForm1.Button3Click(Sender: TObject); begin Memo1.PasteFromClipboard; end;
[/quote:203236b7ac]
GOSTEI 0
Weliton Oliveira
30/07/2007
Caro Adriano,
obrigado pela sua atenção ao responder minha dúvida.
Porém, este código não me serviria, visto que o texto salvo no campo Blob é um documento do Word, com formatações, tabelas, fotos, etc...
coisas que o TDBMemo e o TDBRichEdit não exibem.
O que eu preciso fazer é copiar direto do campo Blob, por exemplo:
TabelaCampoBlob.Value ---> Clipboard, sem usar ´intermediários´ como TDBMemo ou TDBRichEdit.
Entendeu?
De qualquer forma, mais uma vez obrigado pela sua atenção.
[quote=´Adriano Santos´]Isso deve resolver:
[quote=´Copia para a memória´]
obrigado pela sua atenção ao responder minha dúvida.
Porém, este código não me serviria, visto que o texto salvo no campo Blob é um documento do Word, com formatações, tabelas, fotos, etc...
coisas que o TDBMemo e o TDBRichEdit não exibem.
O que eu preciso fazer é copiar direto do campo Blob, por exemplo:
TabelaCampoBlob.Value ---> Clipboard, sem usar ´intermediários´ como TDBMemo ou TDBRichEdit.
Entendeu?
De qualquer forma, mais uma vez obrigado pela sua atenção.
[quote=´Adriano Santos´]Isso deve resolver:
[quote=´Copia para a memória´]
procedure TForm1.Button2Click(Sender: TObject); begin DBMemo1.SelectAll; DBMemo1.CopyToClipboard; end;
[quote=´Cola da memória´]
procedure TForm1.Button3Click(Sender: TObject); begin Memo1.PasteFromClipboard; end;
GOSTEI 0
Bruno Belchior
30/07/2007
Você pode usar diretamente a área de transferência, utilizando um objeto do tipo [b:1616c81e83]TClipboard[/b:1616c81e83] (unit Clipbrd). Mas vale lembrar, que se a área de transferência for alterada, seu trabalho será em vão...
procedure SetClipboard(pText: string); var cb: TClipBoard; begin cb := Clipboard; cb.AsText := pText; end; function GetClipboard: string; var cb: TClipBoard; begin cb := Clipboard; Result := cb.AsText; end;
GOSTEI 0
Weliton Oliveira
30/07/2007
Bruno,
o campo da minha tabela Interbase é um Blob, não é um string (varchar).
Eu uso Stream para salvar e recuperar os dados.
Entendeu?
o campo da minha tabela Interbase é um Blob, não é um string (varchar).
Eu uso Stream para salvar e recuperar os dados.
Entendeu?
GOSTEI 0
Bruno Belchior
30/07/2007
mas se é o texto que está no campo blob, como descreveu acima, então a funcionalidade é a mesma...
GOSTEI 0
Weliton Oliveira
30/07/2007
Ok, Bruno.
Apenas um quadrado vai para o clipboard quando uso os códigos (isso mesmo, a forma geométrica quadrado).
Veja como eu faço para salvar e recuperar o Blob:
Tenho em uma tabela Interbase um campo:
´LAUDO´ BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
onde guardo um texto do MS Word contendo textos, tabelas, fotos, etc.. arquivo do Word, aberto em um Ole Container.
Salvo o conteúdo do Ole Container usando Stream:
procedure TFormResultado.SalvarBlob;
var
strObj : TStream;
begin
strObj := DModule.QueAnato.CreateBlobStream(DModule.QueAnatoLAUDO, bmWrite);
try
with OLEContainer do
if State <> osEmpty then
SaveToStream(strObj);
finally
strObj.Free;
end;
end;
E abro o conteúdo do campo ´LAUDO´ acima usando Stream:
procedure TFormResultado.LerBlob;
var
strObj : TStream;
begin
strObj := DModule.QueAnato.CreateBlobStream(DModule.QueAnatoLAUDO, bmReadWrite);
try
if strObj.Size <> 0 then
OLEContainer.LoadFromStream(strObj);
finally
strObj.Free;
end;
end;
O QUE EU PRECISO:
É jogar para o ClipBoard o conteúdo do Stream aberto com ´LerBlob´ para fazer a impressão.
Talvez possa ser feito de outra forma..... não sei, mas eu preciso jogar direto para área de transferência, sem usar ´intermediários´ (TDBMemo ou TDBRichEdit).
Como o texto pode conter textos, tabelas, fotos, etc... não posso usar um TDBMemo ou TDBRichEdit (visto que eles só exibem texto), para selecionar tudo (SelectAll) e depois copiar para a área de transferência.
É isso aí.
Grande abraço.
Apenas um quadrado vai para o clipboard quando uso os códigos (isso mesmo, a forma geométrica quadrado).
Veja como eu faço para salvar e recuperar o Blob:
Tenho em uma tabela Interbase um campo:
´LAUDO´ BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
onde guardo um texto do MS Word contendo textos, tabelas, fotos, etc.. arquivo do Word, aberto em um Ole Container.
Salvo o conteúdo do Ole Container usando Stream:
procedure TFormResultado.SalvarBlob;
var
strObj : TStream;
begin
strObj := DModule.QueAnato.CreateBlobStream(DModule.QueAnatoLAUDO, bmWrite);
try
with OLEContainer do
if State <> osEmpty then
SaveToStream(strObj);
finally
strObj.Free;
end;
end;
E abro o conteúdo do campo ´LAUDO´ acima usando Stream:
procedure TFormResultado.LerBlob;
var
strObj : TStream;
begin
strObj := DModule.QueAnato.CreateBlobStream(DModule.QueAnatoLAUDO, bmReadWrite);
try
if strObj.Size <> 0 then
OLEContainer.LoadFromStream(strObj);
finally
strObj.Free;
end;
end;
O QUE EU PRECISO:
É jogar para o ClipBoard o conteúdo do Stream aberto com ´LerBlob´ para fazer a impressão.
Talvez possa ser feito de outra forma..... não sei, mas eu preciso jogar direto para área de transferência, sem usar ´intermediários´ (TDBMemo ou TDBRichEdit).
Como o texto pode conter textos, tabelas, fotos, etc... não posso usar um TDBMemo ou TDBRichEdit (visto que eles só exibem texto), para selecionar tudo (SelectAll) e depois copiar para a área de transferência.
É isso aí.
Grande abraço.
GOSTEI 0
Bruno Belchior
30/07/2007
Hum coisa que poderia fazer, é ao ler, guardar a informação em um TMemoyStream, e posteriormente, se precisar da informação, ela está no mesmo...
GOSTEI 0