arestidesf Posted August 24, 2011 Report Share Posted August 24, 2011 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 receberarquivos 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... Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted August 25, 2011 Report Share Posted August 25, 2011 Seguinte, nunca usei o delphi e agora preciso saber tudo do dia pra noitemuito dificil ... só se aprende com muita leitura e muita praticafaça uma pesquisa no forumhttp://scriptbrasil.com.br/forum/index.php...hlite=clipboardou veja http://codigodelphi.blogspot.com/2009/09/c...onteudo-de.htmlhttp://www.google.com.br/search?q=clipboar...mp;aql=&o que=abraço Quote Link to comment Share on other sites More sharing options...
0 arestidesf Posted August 29, 2011 Author Report Share Posted August 29, 2011 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. Quote Link to comment Share on other sites More sharing options...
Question
arestidesf
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 to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.