Hola,
oscarac.
Según tu última respuesta entiendo que estás tratando de manejar el valor de la variable en el evento OnCreate, pero cuando pasas de la creación y tratas de asignar el valor a la variable, ya el evento OnCreate fue llamado y no puedes manipular la variable allí.
Como te dice Neftalí, puedes hacer la asignación y manejarla en el evento
OnShow, puedes sobrescribir el evento de construcción del form (
Create) o puedes manejar un evento al asignar el valor de la propiedad,
Ej: acá tengo el Form2, al cual le he añadido las propiedades
_Origen y
_Origen2 que apuntan a la misma variable F_Origen; También he sobrecargado la creación del TForm añadiendo el manejo de la variable Origen.
Código Delphi
[-]
type
TForm2 = class(TForm)
Edit1: TEdit;
procedure FormShow(Sender: TObject);
private
F_Origen: string;
procedure set_Origen2(const Value: string);
public
constructor Create(AOwner: TComponent; Origen:string); overload;
property _Origen: string read F_Origen write F_Origen;
property _Origen2: string read F_Origen write set_Origen2;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
constructor TForm2.Create(AOwner: TComponent; Origen:string);
begin
inherited Create(AOwner);
F_Origen := Origen;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Edit1.Text := Format('Origen: %s', [F_Origen]);
end;
procedure TForm2.set_Origen2(const Value: string);
begin
F_Origen := Value;
ShowMessage(Format('Origen: %s', [F_Origen]));
end;
end.
Desde otro formulario solo debo crear el formulario con el nuevo constructor
Código Delphi
[-]
procedure TForm1.btnUseCreateClick(Sender: TObject);
var
lForm: TForm2;
begin
lForm := TForm2.Create(Self, obtOrigen);
try
lForm.ShowModal;
finally
lForm.Free;
end;
end;
Crear el formulario y asignar el valor de la propiedad
_Origen
Código Delphi
[-]
procedure TForm1.btnAssignPropClick(Sender: TObject);
var
lForm: TForm2;
begin
lForm := TForm2.Create(Self);
try
lForm._Origen := obtOrigen;
lForm.ShowModal;
finally
lForm.Free;
end;
end;
o crear el formulario y asignar el valor de la propiedad
_Origen2
Código Delphi
[-]
procedure TForm1.btnAssignProp2Click(Sender: TObject);
var
lForm: TForm2;
begin
lForm := TForm2.Create(Self);
try
lForm._Origen2 := obtOrigen;
lForm.ShowModal;
finally
lForm.Free;
end;
end;
En todos los llamados, el resultado es el mismo. En el evento
OnShow alimenta un edit con el origen que haya seleccionado. Con la diferencia que en el caso de asignar el valor a
_Origen2 presentará un mensaje antes de presentar el formulario.