Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2010
Kubelo Kubelo is offline
Miembro
 
Registrado: feb 2010
Posts: 58
Poder: 15
Kubelo Va por buen camino
Problema con 3 DBEdits relacionados

Perdón en primer lugar por el título, pero no sabía como llamar al post.

A ver, tengo 3 DBEdits que contienen, Cantidad, Precio y Total. El problema que me surge es que se debe de "abrir" el contenido de los 3 edits, ya que hay que ceñirse a unos documentos y a veces por el redondeo que llega en el documento no cuadra el (Cantidad x Precio). Así que a veces hay que poner Cantidad y Total y calcularse el precio.

Mi problema es que tengo en el evento OnChange de los 3 DBEDits y os explico.

El OnChange del DBEDit Cantidad calcula el bruto a partir de la cantidad y el precio.

El OnChange del DBEdit Precio hace lo mismo que el de cantidad.

El Onchange del DBEdit Total calcula el precio a partir de la cantidad y el total (Precio = Total/Cantidad).

El problema es que no me funciona, ya que cuando se modifica uno vuelve a saltar su evento Onchange y no funciona correctamente. Se hace como un "bucle" que no me permite modificar el valor en algunos casos.

Por favor sería de suma ayuda que me ilustráseis el modo de solucionar el problema. Sé que con un botoncito "Refrescar" o algo similar sería sencillo, pero me gustaría que fuese automático.

Gracias por la ayuda y perdón por la parrafada! Jejeje
Responder Con Cita
  #2  
Antiguo 11-06-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podrias deshabilitar los eventos OnChange cuando este en cierto DBEdit...

Ejm:

Cuando estas en el DBEdit1, se deberia desabilitar los eventos de DBEdit2, DBEdit3...

Para ello en el evento OnEnter de cada DBEdit podrias hacer...

Código Delphi [-]
procedure TForm1.DBEdit1OnEnter(Sender:TObject);
begin
      DBEdit1.OnChange:=DBEdit1Change;  //Activas el evento onchange del DBEdit1, para que realize los calculos...
      DBEdit2.OnChange:=NIL;
      DBEdit3.OnChange:=NIL;
end;

procedure TForm1.DBEdit2OnEnter(Sender:TObject);
begin
      DBEdit1.OnChange:=NIL
      DBEdit2.OnChange:=DBEdit2Change;  //Activas el evento onchange del DBEdit2, para que realize los calculos...;
      DBEdit3.OnChange:=NIL;
end;

Y asi con el DBEdit3...

Espero te sirva...Saludos
Responder Con Cita
  #3  
Antiguo 11-06-2010
Kubelo Kubelo is offline
Miembro
 
Registrado: feb 2010
Posts: 58
Poder: 15
Kubelo Va por buen camino
Gracias, hace media hora dí con la solución y es supeditar la ejecución del código al foco. Así funciona perfectamente, es decir...

Código Delphi [-]
procedure TFrmOperaciones.DBEditPrecioCChange(Sender: TObject);
begin
  inherited;
  if (DBEditPrecioC.Focused) then
  begin
    MD.TOPeracionesRVBRUTO.AsFloat := StrToFloat(DBEditNTitulosC.Text)*StrToFloat(DBEditPrecioC.Text);
  end;
end;

Gracias por tu respuesta!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema actualización registros relacionados morta71 Firebird e Interbase 4 30-08-2008 08:39:32
qrys relacionados en operacion el_luyi SQL 3 28-02-2008 15:46:25
Problema con DBEdits enecumene Conexión con bases de datos 2 25-08-2007 16:51:40
2 Combobox relacionados Bairon Kumon Varios 4 17-05-2006 18:52:33
Borrar Registros relacionados senpiterno Conexión con bases de datos 3 04-11-2004 10:31:33


La franja horaria es GMT +2. Ahora son las 10:31:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi