Ir para conteúdo
Fórum Script Brasil
  • 0

Procedure - Como Chamar?


rochajl

Pergunta

Achei a seguinte procedure:

procedure TfrmVLENTR.ValidaKey(Const Sender: TObject; var key: char);

begin

if not(key in ['0'..'9','.',',',#8,#13]) then

key := #0;

if key in [',','.'] then

key := DecimalSeparator;

if key = DecimalSeparator then

if pos(key,TMaskEdit(Sender).Text) <> 0 then

key := #0;

end;

na dia onde a encontrei, foi colocado para usá-la no evento onchange. Gostaria de saber qual procedimente de fazer para colocar esta procedure no meu código, onde devo declara-la, e como devo chama-la (estou usando o componente TMaskEdit).

Se alguém puder ajudar, fico grato.

Até mais.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Caro colega, essa procedure desse ser chamada no KeyPress do seu TMaskEdit, pois somente nesse envento você poderá capturar o Key e passar na sua procedura.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - rochajl -

Tudo bem, eu sei que é neste evento, o que eu não estou conseguindo e chama-la.

Como devo colocar.

ValidaKey();

ValidaKey(Self);

ValidaKey(Sender);

ValidaKey

já tentei de várias maneiras e não consegui.

Quem puder me ajudar, agradeço.

Até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, você tem sua procedure ->

TfrmVLENTR = Class(TForm)
  procedure ValidaKey(Const Sender: TObject; var key: char);
  .
  .
implementation


procedure TfrmVLENTR.ValidaKey(Const Sender: TObject; var key: char);
begin
if not(key in ['0'..'9','.',',',#8,#13]) then
key := #0;
if key in [',','.'] then
key := DecimalSeparator;
if key = DecimalSeparator then
if pos(key,TMaskEdit(Sender).Text) <> 0 then
key := #0;
end;

Agora basta você clicar na sua Edit, ir até o object inspector, clicar na paleta Events, e no evento KeyPress deverá estar listado esse procedimento no combobox, então selecione-o e pressione Enter. Está feito.

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse caso o Prog'amador criou um procedimento para o evento OnKeyPress e dentro dele chamou o seu procedimento, e como eu citei eu já coloquei o seu próprio procedimento no evento OnKeyPress diretamente;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - rochajl -

Obrigado pela dica, funcionou corretamente.

O que acontece agora, é que se eu digito ',' ou '.' é mostrado corretamente no TEdit, mas ele grava inteiro na tabela (Ex.: digito 2,35 ou 2.35 e é salvo 235,00). Meu campo na tabela é do tipo DECIMAL (7,2). Minha intenção é que o usuário digitasse usando a vírgula. O que pode estar acontecendo.

Se puderem me ajudar, agradeço.

Link para o comentário
Compartilhar em outros sites

  • 0

existe duas formas:

ou voce usa o componente de procedures de acordo com o compente de conexão de banco ou pode usar uma query normal pra chamar a procedure ou criala, e ao invés de por open poe ExecSQL

ps: caso tenha que passar algum paramentro no ExecSQL, é so passar false

Link para o comentário
Compartilhar em outros sites

  • 0
O que acontece agora, é que se eu digito ',' ou '.' é mostrado corretamente no TEdit, mas ele grava inteiro na tabela (Ex.: digito 2,35 ou 2.35 e é salvo 235,00). Meu campo na tabela é do tipo DECIMAL (7,2). Minha intenção é que o usuário digitasse usando a vírgula.
rochajl, meio estranho, mas como é que você está fazendo a atribuição do texto digitado para o campo na tabela?

Uma opção é diretamente como texto: TabXCampoN.AsString := MaskEdit1.Text;

Outra é convertendo para float: TabXCampoN.AsFloat := StrToFloatDef(MaskEdit1.Text, 0); (seria o mais apropriado)

[]s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...