Faça o download e upload de arquivos via FTP
Neste tutorial vou mostrar-lhe como rapidamente e facilmente fazer o download e upload de arquivos utilizando FTP para acessar um servidor remoto ou de hospedagem. Acesso FTP permite que você trabalhe com arquivos em um servidor remoto diretamente com os arquivos que são armazenados em seu computador, o que é bom.
Em seguida, apresento dois procedimento:
Uses IdFTP
// Enviar um arquivo para o servidor usando o acesso FTP procedure TForm2.ftpsend(host, username, password, filefrom, fileto: string; port: integer); var ftp: TIdFTP; ms: TMemoryStream; begin ftp := TIdFTP.Create(Application); ms := TMemoryStream.Create; try try ftp.host := host; // Endereço do servidor FTP ftp.port := port; ftp.username := username; // Parametro nome usuario servidor FTP ftp.password := password; // Parametro senha servidor FTP ftp.Connect(); AssErt(ftp.Connected); ftp.ChangeDir('/'); // Definir a pasta no servidor ftp.Put(filefrom, fileto, false); // Transferir o arquivo para o servidor ShowMessage('Transferido'); finally ms.Free; ftp.Free; end; except ShowMessage('Uma tentativa de enviar um arquivo para o servidor falhou'); end; end; // Obter um arquivo do servidor via FTP procedure TForm2.ftpget(host, username, password, filefrom, fileto: string; port: integer); var ftp: TIdFTP; ms: TMemoryStream; begin ftp := TIdFTP.Create(Application); ms := TMemoryStream.Create; try try ftp.host := host; // Endereço do servidor FTP ftp.port := port; ftp.username := username; ftp.password := password; ftp.Connect(); AssErt(ftp.Connected); ftp.ChangeDir('/'); // Definir a pasta no servidor ftp.Get(filefrom, fileto, true); // Receber o arquivo do servidor ShowMessage('Arquivo Recebido'); finally ms.Free; ftp.Free; end; except ShowMessage('Uma tentativa de receber um arquivo do servidor com falha'); end; end;
Verifique se o serviço FireBird está sendo executado
Função verificando se o serviço do banco de dados Firebird esta em execução uses Tlhelp32function IsFireBirdRunning: boolean; const PROCESS_TERMINATE = $0001; var Co: BOOL; FS: THandle; FP: TProcessEntry32; s: string; begin FS := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FP.dwSize := Sizeof(FP); Co := Process32First(FS, FP); while integer(Co) <> 0 do begin s := s + FP.szExeFile + #13; Co := Process32Next(FS, FP); end; CloseHandle(FS); if pos('fbserver', s) > 0 then result := true else result := false; end;
Como controlar o tempo de inatividade do usuário
Suponha que você precisa do aplicativo para bloquear automaticamente a entrada / edição de dados, a menos que o usuário tenha sido ativa por um longo tempo. Para fazer isso, é hora de aprender.
Usuários para rastrear tempo pode usar a API GetLastInputInfo .
GetLastInputInfo retorna o tempo (em milissegundos) do último evento (a partir do momento em que a atividade foi detectada através do teclado ou do mouse).
function SecondsIdle: DWord;
var
liInfo: TLastInputInfo;
begin
liInfo.cbSize := SizeOf(TLastInputInfo) ;
GetLastInputInfo(liInfo) ;
Result := (GetTickCount – liInfo.dwTime) DIV 1000;
end;
procedure TForm1.Timer1Timer(Sender: TObject) ;
begin
Caption := Format(‘tempo ocioso : %d segundos’, [SecondsIdle]) ;
end;
Como um resultado do programa no cabeçalho do formulário para exibir o tempo de inatividade, em segundos.
código fonte NOTEPAD
Dados no TTreeView com TDataSet
O processo de preenchimento de dados TTreeView componentes de TDataSet compatível com tipo do exemplo : idNode int, idParentNode int, cNodeName varchar
adicionar uses Windows, SysUtils, DB, ComCtrls
{Nota: o nó raiz deve ser o primeiro registro da amostra. USES : Windows, SysUtils, DB, ComCtrls ***************************************************** } procedure FillTree(Tree: TTreeView; Query: TDataSet; idNode, idParent, cNodeName: string); var i: integer; begin // O nó raiz deve ser o primeiro de uma consulta de exemplo Query.First; Tree.Items.Clear; Tree.Items.AddObject(nil, Query.FieldByName(cNodeName).AsString, Pointer(Query.FieldByName(idNode).asInteger)); Query.Next; while not Query.Eof do begin i := 0; while i < Tree.Items.Count do if Tree.Items.Item[i].Data = Pointer(Query.FieldByName(idParent).asInteger) then begin Tree.Items.AddChildObject(Tree.Items.Item[i], Query.FieldByName(cNodeName).AsString, Pointer(Query.FieldByName(idNode).asInteger)); break; end else Inc(i); Query.Next; end; end; //Exemplo de uso FillTree(TreeView1, ADOQuery1, 'idDoc', 'idParentDoc', 'cDocument');
Obtendo path e o nome do arquivo da área de transferência
Veja neste artigo como obter o path de arquivos que estão na área de transferência.
Certa vez em uma postagem, um colega perguntou-me como obter o path do arquivo que estava na área de transferência, respondi à ele que ao meu ver isto era impossível de se realizar, porém pesquisaria melhor sobre o assunto e lhe daria uma resposta mais exata. Mas depois de averiguar, vi que estava errado. Espero que esse artigo ajude esse colega, e vários outros que precisam do path do arquivo que esteja na área de transferência.
Este exemplo demonstra como extrair os nomes de arquivos “caminho completo” da área de transferência. Então vamos criar um novo projeto VCL e vamos inserir um componente TMemo ( Memo1 ) e um TButton ( Button1 ). Não se esqueça de declarar na seção Uses a classe “Clipboard” e “ShellAPI”. Veja a imagem de nosso projeto na figura abaixo:
Figura 1: Layout do projeto
Temos agora que codificar o OnClick do botão para quando clicarmos nele, seja fornecida a lista de arquivos que estão na área de transferência.
Listagem 1: No Evento OnClick do Button1 digite o seguinte código
procedure TForm1.Button1Click(Sender: TObject); var f: THandle; buffer: Array [0 .. MAX_PATH] of Char; i, numFiles: Integer; begin Clipboard.Open; try f := Clipboard.GetAsHandle(CF_HDROP); If f <> 0 Then begin numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0); Memo1.Clear; for i := 0 to numFiles - 1 do begin buffer[0] := #0; DragQueryFile(f, i, buffer, sizeof(buffer)); Memo1.Lines.Add(buffer); end; end; finally Clipboard.Close; end; end;
Selecione os arquivos que desejas, copiar no Windows Explorer, Windows, e então pressione o botão “Button1” de sua aplicação. Uma lista de arquivos selecionados para copiar será exibido no componente “TMemo”.
Espero que tenham gostado, e que os códigos e dicas tenham facilitado o trabalho e estudo de vocês.
Muito obrigado. Fico por aqui, e espero por vocês na próxima! Grande abraço.
Código Fonte
TMemo e TDBMemo: Pesquisa e margens
Neste artigo aprenderemos a fazer uma pesquisa e colocar margens no TMemo e no TBDMemo.
Neste artigo ensinarei à vocês como se fazer uma pesquisa, e margear no TMemo:
Neste pequeno artigo vocês aprenderão como pesquisar texto e formatar o conteúdo do TMemo com margens à direita e esquerda. Vamos abrir o Delphi e criar um novo projeto, e em seguida adicionar os seguintes componentes no formulário: um TMemo, um TEdit e dois TButton conforme o layout da imagem abaixo:
Figura 1. Layout do Formulário
Depois de realizado este processo, ao evento OnClick do Button1 “Caption Buscar conforme Layout”, implementar o seguinte código:
Listagem 1: Implementando onClick do Button1
procedure TForm1.Button1Click(Sender: TObject); var Find: string; i: integer; begin Find := Edit1.Text; For i := 0 to Memo1.Lines.Count - 1 do If Pos(Find, Memo1.Lines.Text) <> 0 Then Begin Memo1.SetFocus(); Memo1.SelStart := Pos(Find, Memo1.Lines.Text) - 1; Memo1.SelLength := Length(Find); end; end;
Ao clicar no Button1 esse código irá procurar o texto digitado no Edit1, dentro do Memo1 e encontrá-lo irá dar um destaque para o mesmo. Bastante simples e direto, além de não ser complexo, bastante útil para Blob Text extenso.
Agora, vamos adicionar margens no Memo1. Para adicionar margens no TMemo é necessário enviar uma mensagem EM_SETRECT e definir o recurso de tamanho de tela.
Vamos ao código. No evento OnClick do Button2 “Caption Margens conforme Layout”, implementar o seguinte código:
Listagem 2: Implementando onClick do Button2
procedure TForm1.Button2Click(Sender: TObject); var R: TRect; LeftMargin: integer; RightMargin: integer; begin LeftMargin:= 20; RightMargin:= 10; R:= Memo1.ClientRect; R.Left:= R.Left + LeftMargin; R.Top:= R.Top + 2; R.Bottom:= R.Bottom - 2; R.Right:= R.Right-RightMargin; SendMessage(Memo1.Handle, EM_SETRECT, 0, Longint(@R)) ; end;
Lembrando que o mesmo exemplo poderá ser usado com o componente TDBMemo. Agora tudo o que temos que fazer é adicionar qualquer texto nas linhas do componente Memo1 e ver o excelente resultado.
Espero que tenham gostado, segue o código fonte para facilitar o trabalho de vocês.
Muito obrigado. Fico por aqui, e espero por vocês na próxima! Grande abraço.
Como fazer o sistema falar
Veja neste artigo como fazer o sistema falar, através da importação de um Activex, podemos importar esta funcionalidade para dentro do Delphi
Já assisti muitos filmes sobre os hackers. Geralmente um homem jovem senta-se na frente de seu computador e fala com seus sistemas, dá comandos de voz e o computador como um servo estudioso, trabalha sem encostar no teclado. Apesar do fato da capacidade e reconhecimento de fala está constantemente evoluindo e melhorando. Evidentemente, que neste momento, é muito difícil estabelecer um sistema de controle de computador, que seria reconhecido por milhares de comandos e executar esses comandos. Mas, temos o Speech API, um conjunto de interfaces de Fala e Reconhecimento de Voz: Mais neste artigo usando SAPI vamos ensinar seu computador falar.
Microsoft Speech API (SAPI) tem um voz feminina e conhecida como Anna e fala a língua inglesa.
O primeiro passo para usar SAPI devemos importado o Activex para o Delphi. Então abra a IDE do Delphi, selecione menu principal, “Component Import Component” na janela seguinte escolha a opção “Import Type Library“, conforme imagem a baixo e clique em “Avançar”:
Figura 1. Type of Component.
Agora encontrar o “Microsoft Speech Object Library”, selecioná-lo, clique em “Avançar”
Figura 2. Registered Type Libraries.
Na nova janela, selecione a opção “Generate Component Wrappers” e clique em “Concluir”:
Uma Unit chamada SpeechLib_TLB.pas será criada e salva por default no caminho que esta no campo Unit Dir Name: no código fonte esta disponível o arquivo SpeechLib_TLB.pas.
Figura 3. Component.
Agora estamos pronto para trabalhar com SAPI 5.4.
Crie um novo projeto VCL inclua um componente TEdit e um componente TButton como segue figura abaixo e vamos fazer a Anna ler nossas mensagens.
Figura 4. Layout do Formulário.
No Evento OnClick do Button1 implemente o código abaixo:
procedure TForm1.Button1Click(Sender: TObject); var gpIVTxt: ISpVoice; Pool: LongWord; begin gpIVTxt:=CoSpVoice.Create as ISpVoice; gpIVTxt.Speak(PChar(Edit1.Text),SVSFDefault,Pool); end;
Agora você pode executar este programa, escreva no campo Edit1 “I LOVE DELPHI” ou qualquer outra frase em inglês, pressione o botão ouça a Anna falar.
Figura5. Programa em execução.
Existe outra forma de fazer a Anna ler, arquivos TXT, vamos incluir mais 2 componentes em nosso projeto mais um TButton e um TOpenDialog, como segue a imagem abaixo:
Figura 6. Layout do Formulário.
Listagem 2: No Evento OnClick do Button2 implemente o código abaixo:
procedure TForm1.Button2Click(Sender: TObject); var gpIVTxt: ISpVoice; Pool: LongWord; begin if OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName; gpIVTxt := CoSpVoice.Create as ISpVoice; gpIVTxt.Speak(PChar(Edit1.Text), SVSFIsFilename, Pool); end;
Agora crie um arquivo que contém um texto em inglês e tenha em conta todos os sinais de pontuação. Clique no botão Arquivo TXT e ouça a voz de Anna lendo todo o arquivo.
Este é um simples exemplo, pesquise sobre Microsoft Speech API que vai encontrar outros idiomas e outros Agent “vozes” além de Anna.
Um grande abraço a todos e paz no coração!
Criar Formulários AERO
Veja neste artigo como criar formulários AERO. Como utilizar este efeito bem interessante implementado desde o Windows Vista.
Hoje iremos aprender a criar formulários, com efeito, vidro.
Para que o estilo AERO tenha o efeito vidro é necessário que tenha como sistema operacional Windows Vista, Windows 7 ou Superior.
O tema AERO terá que estar ativo em seu Windows, caso contrário o efeito de vidro é ignorado e impossível de ser realizado.
Bem… É muito simples, fácil e rápido realizar o efeito. Para que este seja realizado, temos que alterar somente três propriedades do Form, dando-nos um resultado criativo e bacana.
Para começar, abra um novo projeto VCL, e altere as propriedades que seguem abaixo:
Propriedades a serem alteradas:
DoubleBuffered = True
Veja a figura abaixo da propriedade DoubleBuffered alterada:
Figura 1. DoubleBuffered alterada para True.
Alterando as 2 ultimas propriedades a serem alteradas que são:
GlassFrame.Enabled = True
SheetOfGlass = True
segue figura abaixo da propriedade GlassFrame.Enabled e SheetOfGlass alterada:
Figura 2. GlassFrame.Enabled e SheetOfGlass alterada para True.
Agora apenas execute-o, e o resultado será esse:
Figura 3. Resultado.
Quando a propriedade SheetOfGlass alterado para True todo o formulário passa a ter o efeito vidro, mais também é possível fazer o efeito somente em uma área do formulário.
Passe a propriedade SheetOfGlass para False a propriedade, Left para 125 e a propriedade Rigth para 25 como segue a figura abaixo:
Figura 4. SheetOfGlass alterada para False, Left 125 e Right 25.
Para finalizar, apenas execute-o, e o resultado será esse:
Figura 4. Resultado Final.
Esta foi uma dica que com 3 cliques do mouse temos um efeito bacana.
Espero que o artigo tenha sido útil, e que acima de tudo tenham gostado.
Um abraço, e espero vocês na próxima.
Inicializar seu programa com o Windows
Como fazer seus programas serem executados na inicialização do Windows
É fácil o suficiente arrastar e soltar seu aplicativo ao grupo de inicialização do Windows para executá-lo na inicialização do Windows. Mas, se você quiser fazer isso no seu programa, no final do seu programa de instalação por exemplo, ou se você quisesse fazer seu programa execute apenas uma vez a próxima vez que o Windows iniciar, função a seguir poderia vir a calhar:
procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: boolean); var sKey: string; reg : TRegIniFile; begin if bRunOnce then sKey := 'Once' else sKey := ''; reg := TRegIniFile.Create(''); reg.RootKey := HKEY_LOCAL_MACHINE; reg.WriteString('Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0, sProgTitle, sCmdLine); reg.Free; end;
Utilização:
sProgTitle Titulo do programa. De um modo geral, esta poderia ser qualquer coisa que você quer.
sCmdLine Este é o nome do caminho completo onde o programa executável se encontra.
bRunOnce Defina este como verdadeiro se você deseja executar o programa apenas uma vez.
Se este parâmetro estiver False, o programa especificado será executado sempre que Windows iniciar.
Exemplo:
RunOnStartup(‘Titulo do Progama’, ‘MeuProg.exe’, False);
Considerações importante
incluir Registry no uses
Se ao executar seu teste aparecer o seguinte erro
Figura 1.Mensagem de erro
Você que utiliza o Windows 7 como sistema operacional do seu computador, já deve ter passado por várias situações onde é obrigatório o uso do usuário “Administrador” para executar ou instalar determinado programa, e não é por menos, quem utiliza uma conta “normal”, usuário comum, ou ainda um “Usuário convidado” não tem privilégios para executar determinadas funções do sistema, isto (em partes) acaba sendo muito legal, já que dá maior segurança ao seu sistema, por outro lado, acaba sendo muito chato, já que na maneira convencional, temos que clicar com o botão direito do mouse sobre o arquivo ou programa que desejamos executar como “Administrador” e selecionar a opção “Executar como administrador”, como na imagem abaixo:
Figura 2.Menu ao clicar com o botão direito
clique com o botão direito do mouse sobre seu programa e escolha a opcao Executar como Administrador.
Caso queira habilitar sua conta de administrador no Windows 7 execute o cmd como administrador Digite “net user administrator /active:yes”, sem aspas, dentro do prompt de comando e depois tecle “enter”
Figura 3.Command prompt
Pronto, agora você pode notar que a conta vai aparecer na tela de logon.
Figura 4.Logon do Windows 7
Já estou fugindo do escopo principal, paro por aqui.
Um abraço e até a próxima.