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

(Resolvido) pegar um arquivo do clipboard


arestidesf

Pergunta

e ai galera beleza?

Seguinte, nunca usei o delphi e agora preciso saber tudo do dia pra noite :S..

tenho uma aplicação que tem que receber

arquivos arrastado de fora[ok]

um botao de importar[ok]

aceitar ctrl+V[não ok]

receber arquivos arrastado de dentro da aplicação mesmo[não ok]

1º como faço pra pegar o caminho absoluto o um arquivo *.TXT do clipboard? o form já esta aceitando o ctrl+v, mas não sei manipular a unit clipbrd...

2º como faço pra pegar o caminho absoluto de um arquivo do componente TbsSkinDirTreeView?

eu acredito que seja ate que facil mas não conheço muita coisa de delphi então to penando...

se falei alguma besteira desculpa ae... mas como disse ainda não manjo muito...

então alguém consegue me ajudar...

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Seguinte, nunca usei o delphi e agora preciso saber tudo do dia pra noite

muito dificil ... só se aprende com muita leitura e muita pratica

faça uma pesquisa no forum

http://scriptbrasil.com.br/forum/index.php...hlite=clipboard

ou veja

http://codigodelphi.blogspot.com/2009/09/c...onteudo-de.html

http://www.google.com.br/search?q=clipboar...mp;aql=&o que=

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

bom que precisa de muita leitura eu sei ne ... e acredite que estou lendo, pesquisando fazendo testes e tudo mais, não estou repassando meu trabalho pros outros pelo fórum. a minha dificuldade era realmente não saber nada de delphi mas enfim, consegui achar as respostas que eu estava procurando e vo postar aqui, pois eu realmente penei pra conseguir fazer isso (devido ao meu nivel de conhecimento )

1- se você quiser que um form reconheça o ctrl+v (eu achei esse modo de fazer o mais facil), você deve criar um hotkey:

no PRIVATE, você deve colocar essa procedure:

procedure WMHotkey(var Msg: TWMHotkey); message WM_HOTKEY;
"se você estiver so copiando o codigo beleza, mas se quiser entender o que esta sendo feito da uma procurada sobre mensagens do windows. 2- no FORM CREATE coloque isso
procedure TForm2.FormCreate(Sender: TObject);
begin
   if not RegisterHotkey(Handle, 1, MOD_CONTROL, 86) then
    ShowMessage('Erro ao programar Ctrl+V');
end;
ai você esta dizendo que quando apertar ctrl+v msg vai receber "1" (procure sobre RegisterHotkey) 3-agora montando a procedure:
procedure TForm2.WMHotkey(var Msg: TWMHotkey);
var
   f: THandle;
   buffer: Array [0..MAX_PATH] of Char;
   i, numFiles: Integer;
   path : string;
begin
if not Form2.Active then
Exit;
LisNom :=TStringList.Create;
 case Msg.HotKey of
 1:try
     f:= Clipboard.GetAsHandle( CF_HDROP );
     If f <> 0 Then Begin
       numFiles := DragQueryFile( f, $FFFFFFFF, nil, 0 );
       for i:= 0 to numfiles - 1 do begin
         buffer[0] := #0;
         DragQueryFile( f, i, buffer, sizeof(buffer));
         path := StrPas(buffer);
         LisNom.Add(path);
       end;
     end;
   finally
   end;
  end;
 end;
pontos importantes: "if not Form2.Active then Exit;" - isso serve pra fazer com que so o form em questao aceite o ctrl+v, e não a aplicação toda. "case Msg.HotKey of 1:try" - lembra la em cima onde citei que quando for apertado ctrl+v msg receberia 1, e pra usar agora agora, você pode fazer outras definições depois trata-las no case. tudo isso faz o seguinte: quando você aperta o ctrl+v dentro do form2( e somente nele, não funciona se estive com outro form em foco) ele pega o caminho do arquivo que esta no clipboard. Eu fiz isso pegando caminho porque era o que eu precisava, mas você pode mudar a tratamento e pegar qualquer outra informação que você precise. OK a segunda pergunta: 2º como faço pra pegar o caminho absoluto de um arquivo do componente TbsSkinDirTreeView? bom o tbsskindirtreeview e um componente bem parecido com o windows explorer do XP, onde ele mostra a aquitetura das pastas no seu pc. na minha aplicação eu precisa mostrar um explorer pro cara arrastar um txt para uma tabela e assim ser mostrado os dados, e para isso eu precisava do caminho absoluto
procedure TForm2.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
path : string;
I:Integer;
begin
LisNom := TStringList.Create;
  if Source <> Sender then begin
    path:= TbsSkinDirTreeView(Source).SelectedFolder.PathName;
    LisNom.Add(path);
  end
end;
1- usei um event dragdrop de um componente para poder executar isso, quando eu soltar o arquivo no componente tpanel, ele tratara o arquivo. 2-TbsSkinDirTreeView(Source).SelectedFolder.PathName, esse comando pega o caminho absoluto do arquivo. 3-para que o o tpanel aceite que solte arquivo nele preciso desse codigo tb:
procedure TForm2.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    Accept:= Source is TbsSkinDirTreeView;
end;

então e isso, sei que o post ta complicado e longo, mas como eu disse so novo ainda no delphi e não sei explicar muito bem, mas acho que já vai ajudar um pouco.

Espero que ajude alguém :)

ps*: jhonas, eu sei como usar o google, mas de qualquer forma obrigado pelo pela resposta de alguma maneira estaremos ajudando alguém!

e por mim tópico resolvido.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...