Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
andre.hsc

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

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Vá no evento OnChange da edit e adicione:

Edit1.SelStart := 0;

Abraços!

Compartilhar este post


Link para o post
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.

Editado por Mog.Lucas
Unir mensagens seguidas e colocar tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declare como segue no evento OnCreate do form:

procedure TfrmCalc.FormCreate(Sender: TObject);

begin // Alinha cursor à direita do edtVal.

SysLocale.MiddleEast:= true;

edtVal.BiDiMode:= bdRightToLeft;

end;

Funciona...

Editado por TInfor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém pode me explicar porque este código:

procedure TfrmCalc.FormCreate(Sender: TObject);

begin // Alinha cursor à direita do edtVal.

SysLocale.MiddleEast:= true;

edtVal.BiDiMode:= bdRightToLeft;

end;

não está funcionando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×