passarito Posted February 9, 2017 at 03:43 PM Report Share #602423 Posted February 9, 2017 at 03:43 PM Boas, Estou a pensar desenvolver um programa simples que copia um dado ficheiro para um local pré-estabelecido. A duvida que eu queria colocar é a seguinte: Além de existir a caixa de diálogo para seleccionar o ficheiro, há hipótese de arrastar o ficheiro para o programa e ele ficar com a indicação do ficheiro e caminho sem ter de usar a caixa de diálogo do "file open"? Obrigado Link to comment Share on other sites More sharing options...
nunopicado Posted February 9, 2017 at 08:10 PM Report Share #602425 Posted February 9, 2017 at 08:10 PM (edited) Olhó passarito! 🙂 Sim, claro que dá. Tu podes fazer da form um Drop Target para ficheiros, e depois 'ouvir' o windows quando ele te disser quais os ficheiros. Para tal, começas por colocar na uses da tua form as seguintes units. Uses // blablabla , Winapi.Messages , ShellAPI; No FormCreate, activas o Drop Target: procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end; Na secção Public da form, declaras o método que vai 'ouvir' o Windows: TForm1 = class(TForm, IFileDropTarget) // BlaBlaBla procedure FormCreate(Sender: TObject); private public procedure FileDrop(var Msg: TMessage); Message WM_DROPFILES; // Este método irá ouvir as mensagens relativas a file dropping end; E a sua implementação: procedure TForm1.FileDrop(var Msg: TMessage); const cMaxFileNameLength = 255; var i : Integer; FCount : Integer; FileName : Array [0..cMaxFileNameLength] of Char; begin // Verifica quantos ficheiros estão a ser largados FCount := DragQueryFile(Msg.WParam, $FFFFFFFF, FileName, cMaxFileNameLength); // "Lê" os nomes dos ficheiros que estão a ser largados for i := 0 to FCount - 1 do begin DragQueryFile(Msg.WParam, i, FileName, cMaxFileNameLength); // Faz o que quiseres com o nome do ficheiro Memo1.Lines.Add(FileName); end; // Finaliza DragFinish(Msg.WParam); end; Em vez de adicionar FileName ao Memo1, podes fazer o que quiseres com ele. 😉 Edited February 9, 2017 at 08:17 PM by nunopicado 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
passarito Posted February 10, 2017 at 12:26 AM Author Report Share #602427 Posted February 10, 2017 at 12:26 AM Era isto mesmo que eu queria saber. Obrigado. Tenho de ver ser o Delphi que vou usar tem essas livrarias (uses) ou não. O programa que idealizei é muito simples (para lá de simplérrimo!), sem abrir o ficheiro nem qualquer grafismo. Ao nível do "Welcome!" ou "Olá eu sou o ...." Se resolver fazer isto, vou ponderar se complico isto um bocadito aqui com uma ideia que tive ou não. Não te preocupes que depois eu chateio-te. À parte disto tudo, só para te dizer que em Dezembro fui ficar a Bolfiar e passei pelo vosso Pai Natal gigante e perguntei por ti. O gajo disse-me que não te conhecia... Afinal és popular ou não? 😄 Link to comment Share on other sites More sharing options...
nunopicado Posted February 10, 2017 at 12:54 AM Report Share #602428 Posted February 10, 2017 at 12:54 AM LOL Podias ter dito alguma coisa... 😛 O pai natal tem é inveja da minha generosidade! 😄 Quanto ao Delphi, o Delphi Starter já é gratuito, pelo que se quiseres aventurares-te numa versão actual, ficas satisfeito. 🙂 De resto, ambas as units são básicas, mesmo o Delphi 7 tem isso de certeza. A ShellAPI são wrappers para processos do Windows, e a Messages para a estrutura de mensagens que o Windows usa para tudo o que é GUI. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
passarito Posted February 10, 2017 at 01:07 AM Author Report Share #602429 Posted February 10, 2017 at 01:07 AM Delphi starter? Pois, pois, tenho de pensar. É que a "complicação" que eu estava a pensar era a incorporação de um pequeno registo numa BD de access (ainda em .MDB). Seria apenas data, nome do ficheiro e eventualmente o utilizador. E o starter fica-se nas couves, a não ser que haja alguma forma de contornar isso uma vez que um BD simples e é só para registar(ou alterar no caso do nome do ficheiro já existir) e eventualmente consultar. Link to comment Share on other sites More sharing options...
passarito Posted February 10, 2017 at 01:18 AM Author Report Share #602430 Posted February 10, 2017 at 01:18 AM (edited) Lembei-me agora de uma coisa, com o delphi posso mandar executar uma url? Isto é, mandar executar, abrir uma página de internet... algo do género: http://myspace/webservices/registo.asp?data=10/2/2017&fnome=aaa.txt Se funcionasse não necessitava do delphi para fazer esse registo, com o ASP e o IIS eu tratava-lhe da saúde. Edited February 10, 2017 at 01:19 AM by passarito Link to comment Share on other sites More sharing options...
nunopicado Posted February 10, 2017 at 01:29 AM Report Share #602431 Posted February 10, 2017 at 01:29 AM No Starter podes instalar o componente ZeosLib, que te permite aceder a qualquer motor DB. Também podes usar um TWebBrowser, para aceder a "qualquer" página web. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
nunopicado Posted February 10, 2017 at 01:34 AM Report Share #602432 Posted February 10, 2017 at 01:34 AM (edited) Podes ainda aceder ao conteúdo de um ficheiro alojado online sem necessidade de abrir a página. Podes abrir directo o ficheiro recolhendo o seu conteúdo (texto). Para isso tens a suite de componentes Indy. Edited February 10, 2017 at 01:34 AM by nunopicado 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
nunopicado Posted February 10, 2017 at 02:30 PM Report Share #602436 Posted February 10, 2017 at 02:30 PM Para usares o Indy para ir buscar o conteúdo de um ficheiro online, basta isto: Colocar na form um componente TidHTTP Fazer a chamada onde quiseres, conforme o exemplo: procedure TForm1.Button1Click(Sender: TObject); begin memo1.lines.text := idHTTP1.Get('http://myspace/webservices/registo.asp?data=10/2/2017&fnome=aaa.txt'); end; 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
passarito Posted February 13, 2017 at 10:20 AM Author Report Share #602461 Posted February 13, 2017 at 10:20 AM Obrigado Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now