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
Categorias:Artigos, Delphi Tags:, ,

Utilizando TLight – FireMonkey

Neste artigo aprenderemos a usar os componentes “TLight” e “TCube” do Firemonkey.

Hoje iremos realizar um efeito de iluminação com o componente TLight da biblioteca “FireMonkey”, que suporta a criação de aplicativos facilmente e intuitivamente como temos visto no Delphi por anos. O FMX também é ideal para rápido desenvolvimento de software, com elementos tridimensionais. Apenas inserindo um objeto geométrico “TCube”, alterando suas propriedades com o cursor do mouse, somos capazes de gerar bons efeitos facilmente.

Quando nos referimos a algum objeto em 3D, logo associamos a altura, largura e comprimento como parte do mesmo. O FMX possui dois tipos de projetos: o “FireMonkey 3D Application” e também o “FireMonkey HD Application”; os dois tipos de projetos dão-nos a possibilidade de trabalhar em 3D, sendo que os Forms do “FireMonkey 3D Application” já vem apto para cenas tridimensionais, e nos projetos “FireMonkey HD Application” é necessário adicionar um componente chamado “TViewport3D”. Vou mostrar a estrutura dos dois tipos de projetos 3D e HD mais vamos criar um novo HD e inclua os seguintes componentes um TViewport3D e dentro dele um TCube um TLight e um TFloatAnimation dentro do TCube conforme estrutura abaixo:

Figura 1. Estrutura dos projetos

Alterando propriedades dos componentes:

Propriedades Cube1

  • Material.Emissive = cor desejada
  • Material.Texture.Bitmap.edit = pode-se incluir uma imagem
  • As dimensões, rotação, angulo etc… pode-se fazer com mouse, clicando e movimentando os pinos azuis do componente.

Propriedades Light1

  • LightType = ItDirectional tem mais dois outros tipos ItSpot e ItPoint

Propriedades FloatAnimation1

  • Duration = 4
  • Enabled = True
  • Loop = True
  • PropertyName = RotationAngle.Y com varias outras opções vale a pena testar.
  • StarValue = 0
  • StopValue = 360

Depois de realizado o processo, teremos um resultado como este:

Figura 2. Posição dos Componentes

Agora, vamos fazer uma suposição, incluiremos um botão no Form e habilitaremos essa animação somente quando a opção for selecionada através do botão. Em um projeto HD você teria sucesso. Porém em um projeto 3D, não é possível a inclusão um botão diretamente no Form 3D. Segue detalhes na observação abaixo.

Observação Importante: em um aplicativo 3D é impossível usar diretamente componentes como botões, combobox, grid, etc… No entanto, há uma maneira muito simples para lidar com isso. Para isso teremos uma ligação entre as cenas 3D e 2D. O FireMonkey nos fornece o componente “TLayer3D”, que foi projetado apenas para isso.

Para não estender muito o artigo, segue no código fonte projeto HD e 3D, facilitando o entendimento de como usar o componente TLayer3D.

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.

Firemonkey – Movimentando Objetos com FloatAnimation

Neste artigo aprenderemos a dar movimento a objetos, fazendo animação com o componente TFloatAnimation.

Neste artigo vamos usar o componente TFloatAnimation propondo a criação de um efeito de movimento em Firemonkey. Lembrando que, na maioria dos efeitos  de animação o componente TFloatAnimation é necessario, compreendendo as propriedades do mesmo somos capazes de fazer qualquer tipo de efeitos de animações.  Vou tentar mostrar um exemplo simples em tempo de design e ser bem objetivo. Então vamos nessa!

Crie o projeto “Firemonkey HD Application” e então, inclua os componentes TButton, e um TCircle e posicione os componentes conforme mostra figura abaixo.  Dentro do componente TCircle inclua dois componentes TFloatAnimation, e troque o nome do componente FloatAnimation1 para FloatAnimationx e, FloatAnimation2  para FloatAnimationy. Ainda dentro do TCircle, inclua um componente TImage e na propriedade Bitmap.Edit… inclua imagem de uma bola conforme a imagem abaixo.

Figura 1. Layout e componentes do projeto.

No curso de física que conhecemos, os objetos raramente se movem uniformemente, até mesmo pelas influencias das forças naturais. No caso de uma bola  temos também a gravidade que influencia em seu movimento e trajetória, por isso vamos trabalhar com coordenadas eixo-X e coordenadas eixo-Y. Precisamos  entender tambem “Interpolation”, Interpolation e uma propriedade do componente TFloatAnimation que indica qual o movimento o objeto vai fazer.

Figura 2. Eixo X e Y.

A propriedade Interpolation tem vários gêneros de efeitos que se movimentam.  Podemos citar como outras propriedades importantes o StartValue e StopValue,  onde o próprio nome já descreve sua serventia. Confiram abaixo a imagem das propriedades a serem alteradas do componente FloatAnimationX e FloatAnimationY.

Alterando as propriedades do componente FloatAnimationx:

  • Enable = False
  • Duration = 4
  • Interpolation = itLinear
  • PropertyName = Position.X
  • StartValue = 24
  • StopValue = 800

Alterando as propriedades do componente FloatAnimationy:

  • AutoReverse = True // Anima para trás após a animação para a frente.
  • Duration = 2           // Tempo em segundos\Velocidade
  • Enabled = False      // habilitar movimento
  • Interpolation = itQuadratic // Tipo de movimento
  • Inverse = True  // inverte coordenadas
  • Loop = True  // Repete a animação indefinidamente.
  • PropertyName = Position.Y  //Nome da propriedade para animar
  • StartValue = 24  //coordenadas para iniciar
  • StopValue = 424 //coordenadas para parar

Figura 3. Propriedades a serem alteradas.

Listagem 1. Agora só precisamos habilitar a animação no evento OnClick do Button1:

procedure TForm1.Button1Click(Sender: TObject);
begin
  FloatAnimationx.Enabled := True;
  FloatAnimationy.Enabled := True;
end;

Apenas execute o projeto, e verá o resultado desejado. Observe que depois de terminar o efeito do eixo-X, o efeito do eixo-Y continua a ser executado. Isso pelas  propriedades AutoReverse = True e a propriedade Loop = True. Depois de executar o projeto estude um pouco as propriedades, você pode trocar as propriedade  StopValue dos componentes FloatAnimation, troque também a propriedade Interpolation do componente FloatAnimationy para itElastic veja como comporta-se a  animação. Para maiores informações consulte documentação oficial da Embarcadero: http://docwiki.embarcadero.com/RADStudio/XE2/en/Using_FireMonkey_Animation_Effects

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.

BloodTransitionEffect e ReflectionEffect – Firemonkey no Delphi

Neste artigo aprenderemos a usar dois componentes de efeitos que são: BloodTransitionEffect e o ReflectionEffect do Firemonkey.

Firemonkey é uma plataforma para desenvolvimento de aplicativos visualmente atraentes usando os recursos do processador gráfico. Usando essa plataforma, você pode desenvolver aplicativos para Mac OS X, Win32, Win64 e iOS. Além disso, é importante dizer que Firemonkey é não compatível com VCL (biblioteca componente Visual). Se você começar a desenvolver seu aplicativo com a VCL, você não poderá usar componentes de Firemonkey (FMX) e vice-versa.

No total existem mais de 50 efeitos visuais no Firemonkey que são divididos em várias categorias, como exemplo podemos citar: alteração de contraste, efeito de desfoque, desenvolver uma suave transição de uma imagem para outra, efeito de iluminação, efeito 3D, rotação,  entre outros. Hoje iremos trabalhar com 2 componentes do Firemonkey que são eles TReflectionEffect e o BloodTransitionEffect.

Crie o projeto “Firemonkey HD Application” e então, inclua o componente TText e um TReflectionEffect.

Alterando propriedades do TText:

Text digite Firemonkey

Font.Size 30

Font.Style.fsBold para True

Alterando eventos do TText:

Listagem 1. No evento MouseEnter digite o codigo abaixo:

procedure TForm1.Text1MouseEnter(Sender: TObject);
begin
  ReflectionEffect1.AnimateFloat('Length', 0.7, 0.5);
end;

Listagem 2. No evento MouseLeave digite o codigo abaixo:

procedure TForm1.Text1MouseLeave(Sender: TObject);
begin
  ReflectionEffect1.AnimateFloat('Length', 0.3, 0.5);
end;

Para continuarmos, execute o projeto e passe o cursor do mouse sobre o Text e veja o resultado.

Talvez alguns de vocês não tenham sucesso na execução, não tendo o resultado esperado. Confira então a observação abaixo, e então entenderá a razão disso acontecer.

Observação Importante:

Lembre-se, que cada componente Firemonkey é recipiente para outros componentes, você pode colocar um TImage dentro do componente TButton e irá tornar-se pai do componente TImage.

Observe na imagem abaixo a janela de Estrutura (Structure) o nó do Image1 (TImage) pertence ao nó pai que é o Button1(TButton), se clicarmos no botão que está no formulário e arrastarmos ele para outra posição, a imagem irá junto, isso ocorre porque agora o Image1 está  dentro do Button1.

Figura 1. Observação Importante

Então para que nosso projeto funcione corretamente, o componente ReflectionEffect1 (filho) deve estar dentro do componente Text1 (pai), conforme a imagem da estrutura(Structure) mostra-nos abaixo:

Figura 2.Estrutura coreta

Agora, vamos ver como funciona um efeito de transição de imagens com componente BloodTransitionEffect, para isso adicione um componente Timage primeiramente, e vamos configurar as propriedades do mesmo.

Alterando propriedades do TImage:

Bitmap.edit escolha uma imagem qualquer

Bitmap Create New TBitmapAnimation com esta opção executada é criado um componente BitmapAnimation1.

Alterando propriedades do BitmapAnimation1.

StartValue.edit Escolha uma imagem qualquer.

StopValue.edit Escolha uma imagem qualquer.

Trigger IsMouseOver=true

Trigger Inverse IsMouseOver=true

Observe as propriedades do BitmapAnimation1 na imagem abaixo:

Figura 3. Propriedades BitmapAnimation1

Se executarmos o projeto com todo o procedimento que aprendemos, ao passar o mouse sobre a imagem já conseguiremos ter um efeito de transição de imagem. Caso queira algo mais aperfeiçoado, podemos fazer uma animação nessa transição, tudo o que temos que fazer é incluir o componente  BloodTransitionEffect no formulário, lembrando que o BloodTransitionEffect (filho) deve estar dentro do componente Timage(Pai) conforme o modelo abaixo:

Figura 4. Estrutura final do Projeto.

Temos só que implementar dois eventos do componente Timage.

Alterando eventos do TImage.

Listagem 3. No evento MouseEnter digite o código abaixo:

procedure TForm1.Image1MouseEnter(Sender: TObject);
begin
if BloodTransitionEffect1.Enabled = False then
BloodTransitionEffect1.Enabled := True;
BloodTransitionEffect1.AnimateFloat(‘Progress’, 100, 0.8);
end;

Listagem 4. No evento MouseLeave digite o código abaixo:

procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
BloodTransitionEffect1.AnimateFloat(‘Progress’, 0, 0.8);
end;

E com sucesso, teremos um projeto como mostra a imagem abaixo:

Figura 4. Resultado Final.

Temos vários outros efeitos na paleta Effects além do BloodTransitionEffect, e que em breve, possamos usá-los através de mais artigos que pretendo postar.

Espero que tenham gostado afinal o efeito é muito bonito e não tão complexo de realizar.

Abraços. Fico por aqui, e até a próxima!

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.

Código Fonte

Um grande abraço a todos e paz no coração!

Categorias:Artigos, Delphi Tags:, ,

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:

Resultado

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.

 

 

 


Categorias:Artigos, Delphi Tags:, ,
%d blogueiros gostam disto: