Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[ARTIGO] Usando as APIs para "Procurar" e "Mover" janelas do Windows.


.mrGuri ~
 Compartilhar

Posts Recomendados

Introdução:

 

Neste artigo vou mostar como usar algumas APIs do Windows para mover a caixa de Diálogo chamada pela função SelectDirectory.

 

A caixa de diálogo em questão, quando chamada, se abre alinhada ao canto direito inferior do Windows, próximo ao relógio. Com algumas técnicas, vamos poder movê-la em tempo de execução para uma nova posição. Para isso vamos usar as seguintes APIS:

 

FindWindow : Usada para localizar a janela.

GetWindowRect : Usada para recuperar a posição em que a janela foi aberta.

MoveWindow : Para mover a caixa de diálogo para a posição desejada, no nosso caso, centro do desktop.

 

Montando a Form:

 

A primeira coisa que devemos fazer é desenhar o form de exemplo.

 

Abra o Delphi e em um novo projeto insira os seguintes componentes:

 

ü 1 TButton. Mude sua propriedade Name para btnSelecionar e Caption para Selecionar Diretório.

 

ü 1 TEdit com o Name de edCaminho. Limpe a propriedade Text.

 

ü 1 TTimer da paleta System com o nome de tmAjustar.

 

ü Configure o form como no exemplo da figura 1.

 

image001.jpg

 

ü Mude a propriedade Enabled do TTimer para False e Interval coloque 100.

 

Comandos:

 

Feito isso, declare na cláusula "uses" do form a unit FileCtrl.

 

Para o evento onClick do btnSelecionar digite o algoritimo da Listagem 1;

 

É necessário se cadastrar para acessar o conteúdo.

 

No evento onTimer do objeto TTimer digite o código da Listagem 2;

 

É necessário se cadastrar para acessar o conteúdo.

 

Explicações:

 

Primeiro nós precisamos de um manipulador do tipo THandle, obtido através da api FindWindow:

 

É necessário se cadastrar para acessar o conteúdo.

 

A variável tmHandle recebe o “handle” da janela cujo o Caption é:

 

Procurar Pasta. O primeiro parâmetro de FindWindow é a classe da janela procurada. Como não sabemos passamos Nil.

 

Depois disso verificamos se o tmHandle é maior que zero, ou seja, se a janela foi encontrada. Em caso positivo, usamos a API GetWindowRect. Essa api armazena em uma variável do tipo TRect a informações suficientes para mais tarde movermos a janela.

 

É necessário se cadastrar para acessar o conteúdo.

 

O primeiro parâmetro, como podemos ver, é o manipulador Handle obtido mais acima. O segundo é a própria variável TRect.

 

Isso foi feito porque para mover a janela com MoveWindow, que veremos logo adiante, são necessários os novos Tamanhos e Posições. Para sabermos essas informações efetuamos alguns cálculos, veja:

 

É necessário se cadastrar para acessar o conteúdo.

 

Com base nas informações recebidas em tmRect, calculamos a largura e altura da janela. Depois calculamos o novo left e top, usando o tamanho do Screen. Neste caso estamos enviando a janela para o centro do Desktop.

 

Agora só nos resta fazer a chamada a API MoveWindow, veja:

 

É necessário se cadastrar para acessar o conteúdo.

 

Explicando: o primeiro parâmetro é o manipulador Handle, ou seja, a própria janela. Os parâmetros seguintes são, respectivamente, Left, Top, Largura, Altura e se a janela deve ser “repintada”.

 

Por fim, desativamos o Timer, usado somente no instante em que a janela é chamada.

 

 

Créditos:

 

DelphiBR

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.