Hola querido foro, yo de nuevo molestando por acá, le comento estoy creando un componente muy simple que llama a un form que tiene:
1 - Un label con passwordchar = *
2 - Una caja de texto
3 - Un boton ok
4 - Un boton cancelar
La idea principal es que se pueda cambiar el caption del form, del label y del boton ok y cancelar por propiedades para que no me limite si tengo que hacer un programa para otro idioma (hace mas de 5 años programe para un italiano).
El código completo del form es:
Código Delphi
[-]
unit Ufcontrasena;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
Tfcontrasena = class(TForm)
Lleyenda: TLabel;
Eclave: TEdit;
btnok: TBitBtn;
btncancel: TBitBtn;
procedure btnokClick(Sender: TObject);
procedure inicializar();
private
public
titulo, contrasena, leyenda, strok, strcancel, mensaje: string;
result : boolean;
end;
var
fcontrasena: Tfcontrasena;
implementation
{$R *.dfm}
procedure Tfcontrasena.inicializar();
begin
fcontrasena.Caption:= titulo;
Lleyenda.Caption:= leyenda;
btnok.Caption:= strok;
btncancel.Caption:= strcancel;
end;
procedure Tfcontrasena.btnokClick(Sender: TObject);
begin
result:= Eclave.Text = contrasena;
if result = True then close
else
begin
ShowMessage(mensaje);
end;
end;
end.
y el código del componente que si me está funcionando es:
Código Delphi
[-]
unit contrasena;
interface
uses
Windows, Messages, SysUtils, Classes;
type
tcontrasena = class(tcomponent)
private
Ftitulo , Fvarcontrasena, Fleyenda, Fstrok, Fstrcancel, Fmensaje: string; result : boolean;
protected
public
constructor Create(AOwner : TComponent); override;
procedure Execute;
published
property Titulo: string read Ftitulo write Ftitulo ;
property contrasena: string read Fvarcontrasena write Fvarcontrasena ;
property Leyenda: string read Fleyenda write Fleyenda ;
property ok:string read Fstrok write Fstrok ;
property cancel: string read Fstrcancel write Fstrcancel ;
property mensaje: string read fmensaje write fmensaje ;
end;
procedure Register;
implementation
uses Ufcontrasena;
constructor tcontrasena.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
Ftitulo := 'Ingrese contraseña';
Fvarcontrasena := '';
Fleyenda := 'Clave';
Fstrok:= 'Ok';
Fstrcancel:= 'Cancelar';
fmensaje:= 'Clave incorrecta';
fcontrasena := tFcontrasena.Create(self);
try
fcontrasena.titulo := ftitulo;
fcontrasena.contrasena := fvarcontrasena;
fcontrasena.leyenda := fleyenda;
fcontrasena.strok := fstrok;
fcontrasena.strcancel := fstrcancel;
fcontrasena.mensaje:= fmensaje;
fcontrasena.Inicializar;
fcontrasena.ShowModal;
finally
fcontrasena.Free;
end;
end;
procedure Register;
begin
RegisterComponents('Curso', [tcontrasena]);
end;
end.
Bueno como explico en la definición de las propiedades si saco las { } en:
Código Delphi
[-]
published
property Titulo: string read Ftitulo write Ftitulo ;
property contrasena: string read Fvarcontrasena write Fvarcontrasena ;
property Leyenda: string read Fleyenda write Fleyenda ;
property ok:string read Fstrok write Fstrok ;
property cancel: string read Fstrcancel write Fstrcancel ;
property mensaje: string read fmensaje write fmensaje ;
end;
El error que me sale es:
Cita:
[Error] contrasena.pas(25): Default values must be of ordinal, pointer or small set type
|
Bueno, no se que me estoy pasando por alto debe ser que me estoy quedando viejo, no lo puedo sacar.
Bueno espero que me puedan ayudar.