somando em tempo de execução
Tenho 21 DBEdit´s, dos quais 20 recebem valores digitados pelo usuário, (não é obrigado preencher todos) e o vigéssimo primeiro deve mostrar o resultado da soma logo após o usuário digitá-los (em tempo de execução). como faço isso?? (ex. igual aqueles sistemas de vendas quando é digitado a qtde de produtos o valor total é mostrado)?
A TODOS OBRIGADO.
A TODOS OBRIGADO.
Boavida
Curtidas 0
Respostas
Robinhocne
12/10/2008
dá para vc fazer essa soma no onexit do penultimo dbedit, pois assim que o usuario passar por ele ai vc coloca para o resultado aparecer no 21ª DbEdit.
ou no onenter do 21ªDbEdit para fazer a soma!
ou no onenter do 21ªDbEdit para fazer a soma!
GOSTEI 0
Eniorm
12/10/2008
vamos supor que temos apenas 5 dbedits (para facilitar o código)
no evento OnExit do último eu implemento algo deste tipo
Com isso, ao ser disparado o evento OnExit do último dbedit (DBEdit5) será feito as somas....
E para melhorar, eu seleciono os 4 primeiros dbedits (1, 2, 3 e 4), e associo o evento OnExit de cada dbedit, com o evento OnExit do DBEdit5
assim, a implementação deste evento será refletida para todos os 5 dbedits
abraços
no evento OnExit do último eu implemento algo deste tipo
DBEdit5.Field.AsFloat := DBEdit1.Field.AsFloat + DBEdit2.Field.AsFloat + DBEdit3.Field.AsFloat + DBEdit4.Field.AsFloat;
Com isso, ao ser disparado o evento OnExit do último dbedit (DBEdit5) será feito as somas....
E para melhorar, eu seleciono os 4 primeiros dbedits (1, 2, 3 e 4), e associo o evento OnExit de cada dbedit, com o evento OnExit do DBEdit5
assim, a implementação deste evento será refletida para todos os 5 dbedits
abraços
GOSTEI 0
Boavida
12/10/2008
tudo bem, mas vamos considerar que nao é obrigatório o preenchimento de todos os DBEdit´s, esse seu código dará certo??
GOSTEI 0
Facc
12/10/2008
tudo bem, mas vamos considerar que nao é obrigatório o preenchimento de todos os DBEdit´s, esse seu código dará certo??
Realmente, se ele deixar algum Edit em branco vai dar erro de null is not a float value...
acredito que para isso terá que fazer uma verificação em todos os edits antes da soma, caso esteja em branco, jogar 0 (zero)
GOSTEI 0
Eniorm
12/10/2008
então vamos ajustar....
if ((Sender as TDBEdit).Field.IsNull) then (Sender as TDBEdit).Field.AsFloat := 0; // restante do código
GOSTEI 0
Diegotiemann
12/10/2008
Eu faria assim:
var SOMA:Inteiro;;;considerando que aceite somente inteiros begin for I := 0 to ComponentCount - 1 do if Components[I] is TEdit then if TEdit(Components[I]).Text<>´´ then SOMA:=SOMA+StrToInt(TEdit(Components[I]).Text); //ai é so atribuir o valor da várivel onde ocê quer end;
GOSTEI 0
Boavida
12/10/2008
Seu código parece legal, mas onde coloco ele? desde já obrigado
GOSTEI 0
Emerson Nascimento
12/10/2008
[quote:d9383a009e=´Enio Marconcini´]vamos supor que temos apenas 5 dbedits (para facilitar o código)
no evento OnExit do último eu implemento algo deste tipo
Com isso, ao ser disparado o evento OnExit do último dbedit (DBEdit5) será feito as somas....
E para melhorar, eu seleciono os 4 primeiros dbedits (1, 2, 3 e 4), e associo o evento OnExit de cada dbedit, com o evento OnExit do DBEdit5
assim, a implementação deste evento será refletida para todos os 5 dbedits
abraços[/quote:d9383a009e]
essa é a melhor sugestão. e pode ficar tranquilo que não dará erro se algum campo estiver vazio, visto que o asFloat já resolve isso: se estiver vazio, retorna 0 (zero).
no evento OnExit do último eu implemento algo deste tipo
DBEdit5.Field.AsFloat := DBEdit1.Field.AsFloat + DBEdit2.Field.AsFloat + DBEdit3.Field.AsFloat + DBEdit4.Field.AsFloat;
Com isso, ao ser disparado o evento OnExit do último dbedit (DBEdit5) será feito as somas....
E para melhorar, eu seleciono os 4 primeiros dbedits (1, 2, 3 e 4), e associo o evento OnExit de cada dbedit, com o evento OnExit do DBEdit5
assim, a implementação deste evento será refletida para todos os 5 dbedits
abraços[/quote:d9383a009e]
essa é a melhor sugestão. e pode ficar tranquilo que não dará erro se algum campo estiver vazio, visto que o asFloat já resolve isso: se estiver vazio, retorna 0 (zero).
GOSTEI 0
Boavida
12/10/2008
Amigão deu certo... muito obrigado
GOSTEI 0
Misterzire
12/10/2008
Tente Aggregates Fields . Que é um tipo de campo calculado que são utilizados para realizar calculos automaticos em tempo de execução .
GOSTEI 0