Ver la Versión Completa : Problema con constructor..
linuxtin
08-08-2012, 15:31:21
Hola a todos! Me estoy volviendo loco no puedo crear el objeto de la clase TPersona desde otro form, acá les dejo el código de la clase.
unit Persona;
interface
uses SysUtils, Classes;
type
TPersona=Class
private
idPersona:string;
apellido:string;
nombre:string;
dni:string;
fechaNacimiento:TDate;
provincia:string;
ciudad:string;
codigoPostal:integer;
direccion:string;
codigoArea:integer;
telefono:string;
public
constructor Create; overload;
constructor Create(Apellido:string;Nombre:string);overload;
published
property SetGetApellido: string read apellido write apellido;
property SetGetNombre: string read nombre write nombre;
END;
implementation
constructor TPersona.Create(Apellido: string; Nombre: string);
begin
apellido:=Apellido;
nombre:=Nombre;
end;
constructor TPersona.Create;
begin
end;
end.
y en el form lo llamo de esta manera
procedure TForm1.Button1Click(Sender: TObject);
var
persona:TPersona;
begin
persona:=TPersona.Create('Juan','Pedro');
Edit3.Text:=persona.SetGetApellido;
end;
end.
Si alguien me puede dar una mano, desde ya muchas gracias!!
Hola linuxtin, no dices que error te sale, en uses debes añadir la unit Persona que supongo lo haces. Otra cosa que veo, apellido y nombre tienen el mismo nombre que tus parametros del constructor (delphi no hace diferencia entre mayusculas y minusculas) cambia los nombres.
constructor TPersona.Create(aApellido: string; aNombre: string);
begin
apellido:=aApellido;
nombre:=aNombre;
end;
Saluditos
ecfisa
08-08-2012, 15:51:16
Hola linuxtin.
Proba de este modo:
unit uPersona;
interface
uses SysUtils, Classes;
type
TPersona=Class
private
idPersona:string;
FApellido:string;
FNombre:string;
//...
public
constructor Create(Apellido:string; Nombre:string);
//...
published
property Apellido: string read FApellido write FApellido;
property Nombre: string read FNombre write FNombre;
//...
end;
implementation
constructor TPersona.Create(Apellido: string; Nombre: string);
begin
FApellido:= Apellido;
FNombre:= Nombre;
end;
//...
end.
...
implementation
uses uPersona;
procedure TForm1.Button1Click(Sender: TObject);
var
Persona: TPersona;
begin
Persona:= TPersona.Create('TRUENO','PEPE');
ShowMessage(Persona.Nombre+' '+Persona.Apellido);
end;
Saludos.
linuxtin
08-08-2012, 16:01:40
Hola linuxtin.
Proba de este modo:
unit uPersona;
interface
uses SysUtils, Classes;
type
TPersona=Class
private
idPersona:string;
FApellido:string;
FNombre:string;
//...
public
constructor Create(Apellido:string; Nombre:string);
//...
published
property Apellido: string read FApellido write FApellido;
property Nombre: string read FNombre write FNombre;
//...
end;
implementation
constructor TPersona.Create(Apellido: string; Nombre: string);
begin
FApellido:= Apellido;
FNombre:= Nombre;
end;
//...
end.
...
implementation
uses uPersona;
procedure TForm1.Button1Click(Sender: TObject);
var
Persona: TPersona;
begin
Persona:= TPersona.Create('TRUENO','PEPE');
ShowMessage(Persona.Nombre+' '+Persona.Apellido);
end;
Saludos.
Gracias chicos!! Efectivamente era eso, pensé que estaba mal declarado algo.
Como ven declarada la clase? Algo que esta mal?
Gracias !!
ecfisa
08-08-2012, 17:20:01
Como ven declarada la clase? Algo que esta mal?
Hola.
No... Pero podrías agregar algunos detalles a efectos de optimizar el ingreso de los valores:
...
type
TPersona=Class
private
idPersona:string;
FApellido:string;
FNombre:string;
//...
function GuardarApellido: Boolean;
function GuardarNombre: Boolean;
procedure SetApellido(const Value: string);
procedure SetNombre(const Value: string);
//
public
constructor Create(aApellido:string; aNombre:string);
//...
published
property Apellido: string read FApellido write SetApellido stored GuardarApellido;
property Nombre: string read FNombre write SetNombre stored GuardarNombre;
//...
end;
implementation
constructor TPersona.Create(aApellido: string; aNombre: string);
begin
Apellido:= aApellido;
Nombre:= aNombre;
end;
function TPersona.GuardarApellido: Boolean;
begin
Result:= FApellido <> '';
end;
function TPersona.GuardarNombre: Boolean;
begin
Result:= FApellido <> '';
end;
procedure TPersona.SetApellido(const Value: string);
begin
if Value <> FApellido then
FApellido:= Value;
end;
procedure TPersona.SetNombre(const Value: string);
begin
if Value <> FNombre then
FNombre:= Value;
end;
...
Saludos.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.