Ir para conteúdo
Fórum Script Brasil
  • 0

Clipboard (Resolvido)


Paulo Nobre

Pergunta

Prezados Colegas

A um tempo atrás estava querendo colar figuras num dbImage e o colega s3c forneceu o seguinte código:

uses ClipBoard;

procedure TForm1.DBImage1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #22) and Clipboard.HasFormat(CF_PICTURE) then
begin
DBImage1.Picture.Assign(Clipboard);
DBImage1.Stretch := true;
DBImage1.Refresh;
end;
end;

Obs: O picture será um TBitmap; se quiser modificá-lo p/ Jpeg(menor espaço), também é possível.

Atualmente tenho um programa que apresenta uma figura num Image1 e gostaria de que o usuário ao clicar na imagem e em seguida fizesse CTRL + C mandasse a figura (existem bmp e jpeg) para o clipboard para que com CTRL + V ele pudesse copiar, por exemplo no word.

Alguém poderia me dizer como fazer isto. Tentei adaptar o código, mas não consegui.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Se o problema é copiar a imagem para a área de transferência, então basta fazer:

var formato : Word;
    dados : Cardinal;
    paleta : HPALETTE;
begin
  Image1.Picture.SaveToClipBoardFormat(formato, dados, paleta);
  ClipBoard.SetAsHandle(formato, dados);
end;

Trocando o "Image1" pelo nome do seu TImage é claro. Agora detectar o CTRL+C é que é mais complicadinho... (sem falar que a TImage não fica com foco, como outros controles).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Graymalkin

Valeu pela força.

Ao invés de pedir ao usuário para fazer CTRL + C, pedirei para clicar na figura e depois fazer CTRL + V onde quiser colar a figura. Neste caso coloco o seu código no ONCLICK da Image1.

O CTRL + C é porque o usuário está mais acostumado com este comando para copiar.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente o TImage não possui eventos de key mas você pode colocar o TImage dentro de um Listbox por exemplo:

1-Coloque um Listbox e ajuste o tamanho e posição relativos à imagem.

2-Retire suas bordas:

ListBox1.BevelInner := bvNone;

ListBox1.BevelOuter := bvNone;

ListBox1.BorderStyle := bsNone;

3-Deixe a propriedade Style := lbOwnerDrawVariable; p/ não aparecer o pontilhado da primeira linha.

4-No onCreate do Form execute:

Image1.Parent := ListBox1;

Image1.Align := alClient;

5-No onClick do TImage execute:

ListBox1.SetFocus;

6-No onKeyPress do Listbox cheque o ctrl+c (#3) e coloque o código que o Graymalkin sugeriu.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...