Ir ao conteúdo
  • Cadastre-se

Como fazer um edit escrever de trás pra frente?


Visitante: andre.hsc

Posts recomendados

Visitante: andre.hsc
 

bem, eu sou estudando de desenvolvimento

e preciso fazer um trabalho..

fazer uma calculadora similar a do windows

mas não estou conseguindo fazer o "EDIT" para receber os valores..

calculadoras recebem valores de trás pra frente...

esse é meu problema.. alguem pode me ajudar?

eu ainda não estou muito familiarizado com as ferramentas do delphi 7.

por isso não sei se há algum modo mais simples de fazer...

obrigado.

Link para o comentário
Compartilhar em outros sites

Acho que nosso amigo quis dizer escrever da direita para a esquerda, tal como a calculadora do windows, e não escrever invertido (rs).

Estou procurando como faz isso, pois não lembro.

Abraços.

Editado pela moderação para unir mensagens postadas seguidamente:

Amigo, pesquisando descobri que a calculadora do windows usa um painel com alinhamento a direita para fazer este efeito. No delphi, não existe este alinhamento para uma edit.

Para fazer então, como a calculadora do windows você deve criar um painel (TPanel) na aba Standard do delphi, mudar sua propriedade alignment para taRightJustify. O problema é que para fazer a escrita terá que chamar cada tecla pelo evento OnClick e isso demandará muito trabalho. Portanto, por ora, sugiro que use o edit, mesmo com suas limitações.

Editado pela moderação para unir mensagens postadas seguidamente:

Para fazer o que deseja de modo simples, no evento on click do formulário faça:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#48 then
Panel1.Caption:=Panel1.Caption+'0';
if Key=#49 then
Panel1.Caption:=Panel1.Caption+'1';
if Key=#50 then
Panel1.Caption:=Panel1.Caption+'2';
if Key=#51 then
Panel1.Caption:=Panel1.Caption+'3';
if Key=#52 then
Panel1.Caption:=Panel1.Caption+'4';
if Key=#53 then
Panel1.Caption:=Panel1.Caption+'5';
if Key=#54 then
Panel1.Caption:=Panel1.Caption+'6';
if Key=#55 then
Panel1.Caption:=Panel1.Caption+'7';
if Key=#56 then
Panel1.Caption:=Panel1.Caption+'8';
if Key=#57 then
Panel1.Caption:=Panel1.Caption+'9';
end;

Explicação:

Neste evento, a variável Key manda um código em decimal da tecla pressionada. Sabendo o código de cada tecla, pode-se trabalhar com o pressionamento dela. No caso, de #48 a #57 são os números de 0 a 9. Procure neste site http://www.arquivodecodigos.net/arquivo/referencias/delphi/codigos_teclas_virtuais.php mais códigos de teclas.

Editado pela moderação para unir mensagens postadas seguidamente:

Dúvidas sobre este código é só pérguntar.

Abraços.

Editado pela moderação para unir mensagens postadas seguidamente:

Você ainda pode mudar as propriedades do panel para ele parecer um edit.

→ BevelOuter: mude para bvLowered.

→ Color: mude para clBtnHighlight.

Abraços.

Editado pela moderação para unir mensagens postadas seguidamente:

Testando o código vi que há um problema. Se houver outro componente na tela o evento onclick do form não será chamado. Infelizmente uma medida eficaz contra isso eu não conheço.

Editado pela moderação para unir mensagens postadas seguidamente:

Lembrei de uma forma melhor, mas ainda não 100% adequada.

Na aba system, crie um timer, e mude a propriedade Interval dele para 1.

Na aba events do object inspector para o timer crie o evento OnTimer e nele crie o código que verifique as teclas numéricas:

if GetAsyncKeyState(VK_NUMPAD0)<>0 then

Panel1.Caption:=Panel1.Caption+'0';

if GetAsyncKeyState (VK_NUMPAD0)<>0 then

sleep(100);

Neste codigo a função GetASyncKeyState verifica o estado da tecla e retorna 0 se ela não estiver pressionada. Logo, se for diferente de 0 o valor do retorno, a tecla está pressionada. Abaixo, ele verifica a mesma tecla, para evitar que você clique uma vez e saiam vários números de uma vez só. Assim, se ela continuar pressionada ele espera 1 décimo de segundo (100 milésimos de segundo) com o uso da função sleep.

Obs:

Para programar as outras teclas numéricas, use, ao invés de VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, etc.

Para programar as teclas de multiplicar, dividir, somar e subtrair, use:

VK_MULTIPLY

VK_ADD

VK_SUBTRACT

VK_DIVIDE

Para mais teclas, acesse http://www.arquivodecodigos.net/arquivo/referencias/delphi/codigos_teclas_virtuais.php

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...