Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema con atributos privados (https://www.clubdelphi.com/foros/showthread.php?t=53917)

Durbed 04-03-2008 19:39:51

Problema con atributos privados
 
Hola tengo el siguiente codigo:
Código Delphi [-]
...
private
    D, H: Real;
    
    procedure Calc_Saldo;
...

// Procedimento que calcula el saldo
procedure TForm1.Calc_Saldo;
Begin
  EdSaldo.FloatValue := D - H;
End;

// En el evento OnCreate del From
  D := SaldoDebe;
  H := SaldoHaber;
  Calc_Saldo;


SaldoDebe y SaldoHaber son valores que saco de una base de datos, el problema es que dentro del procedimiento Calc_Saldo, el valor de D y H es 0. En el evento OnCreate los valores de D y H son los que le asigno, es decir, que al volver el control del programa al procedimiento OnCreate D y H vuelven a tener los valores que tenian antes de la llamada al procedimiento Calc_Saldo.

A ver si podeis aclarar a que se debe esto y como podria solucionarlo.

Gracias

Caral 04-03-2008 20:31:53

Hola
Pues no se entiende muy bien, pero veamos por partes:
En el oncreate indicas:
D := SaldoDebe;
H := SaldoHaber;
Calc_Saldo;

Que dice esto?
Cuando se cree el form, D y H obtengan el valor de la bd y seguidamente cambienlo por el del procedimiento Calc_Saldo.
Osea que seria lo mismo que poner en el evento oncreate directamente el valor del procedimiento, ya que es lo que estas haciendo.
Para mi si lo que se quiere es limpiar el valor cada vez que se cree el form, o usaria una directriz o lo haria mas bien cuando se destruya el from, no antes.
Saludos

egostar 04-03-2008 20:38:18

A menos que estes creando la forma en tiempo de ejecución es correcto usar el código en el evento OnCreate, pero......., si no la estas creando te recomiendo que uses el evento OnShow.

Salud OS

Durbed 05-03-2008 11:00:07

A ver, al crear la forma leo los valores de la base de datos y se los asigno a los atributos D y H, es un ejemplo sencillo para no extenderme, pues el procedimiento no tiene una linea, el problema es que dentro del procedimiento D y H tienen valor 0 cuando en el evento OnCreate han tomado otros valores (lo he comprobado).

He probado a declarar los atributos como públicos pero el resultado es el mismo.

Un saludo y gracias.

PD: EdSaldo es un TAdvEdit que admite un valor real y ahí no esta el problema, sino en D y H.

keyboy 05-03-2008 16:52:29

Tan solo para eliminar posibilidades. ¿No tienes declarados D y H dos veces? Por ejemplo, si en el evento OnCreate tienes:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  D, H: Real;

begin

  ...

  D := SaldoDebe;
  H := SaldoHaber;
  Calc_Saldo;
end;

En este caso, Los D y H que ve Calc_Saldo son distintos de los que ve OnCreate.

Bye

Durbed 05-03-2008 17:52:01

jajajaja keyboy gracias, te juro que había revisado el código y no lo vi, en que estaría mi cabeza :eek::eek::eek::eek: acepto collejas.

PD: Ya estaba pensando en alguna elucubración extraña para arruinarme la semana


La franja horaria es GMT +2. Ahora son las 20:21:16.

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