Classes
Galera, estou com este probleminha abaixo...
o método SetUsuarios da classe TCadastro não esta sendo executada ...
alguem sabe o porque?
[b:8ea77ada8e]ClasseUsuarios.pas[/b:8ea77ada8e]
[b:8ea77ada8e]fCadastro.pas[/b:8ea77ada8e]
o método SetUsuarios da classe TCadastro não esta sendo executada ...
alguem sabe o porque?
[b:8ea77ada8e]ClasseUsuarios.pas[/b:8ea77ada8e]
unit ClasseUsuarios;
interface
uses
Windows, Forms;
Type
TUsuarios = class
private
fNome: string;
fIdade: Integer;
published
property Nome: string read fNome write fNome;
property Idade: Integer read fIdade write fIdade;
end;
TCadastro = class
private
fUsuarios: TUsuarios;
procedure SetUsuarios(const Value: TUsuarios);
published
property Usuario: TUsuarios read fUsuarios write SetUsuarios;
public
constructor Create;
destructor Destroy;
end;
implementation
{ TCadastro }
constructor TCadastro.Create;
begin
fUsuarios:= TUsuarios.Create;
end;
destructor TCadastro.Destroy;
begin
fUsuarios.Free;
end;
procedure TCadastro.SetUsuarios(const Value: TUsuarios);
begin
if (Value.Idade < 21) then
begin
Application.MessageBox(´Proibido cadastro de menores´,´Erro´, MB_OK + MB_ICONERROR);
end else
begin
fUsuarios := Value;
Application.MessageBox(´Cadastro realizado com sucesso!´,´Ok´, MB_OK + MB_ICONINFORMATION);
end;
end;
end.
[b:8ea77ada8e]fCadastro.pas[/b:8ea77ada8e]
procedure TForm1.Button1Click(Sender: TObject);
var
MeuCadastro: TCadastro;
Teste: TUsuarios;
begin
{MeuCadastro := TCadastro.Create;
Teste := TUsuarios.Create;
Teste.Nome := ´Rodrigo´;
Teste.Idade := 18;
MeuCadastro.Usuario:= Teste; } /// ********** DESTA FORMA AKI FUNCIONA **** ///
MeuCadastro:= TCadastro.Create;
MeuCadastro.Usuario.Nome:= ´Rodrigo´;
MeuCadastro.Usuario.Idade:= 18;
end;Output
Curtidas 0
Respostas
Edjlle
19/02/2008
Não entendi a dúvida! Como exatamente não funciona?
GOSTEI 0
Edjlle
19/02/2008
Eu acho que é porque propriedades são diferentes de campos, nesse caso você está tentando acessar um campo de uma classe como ´Nome´ que é do tipo string, sendo que na verdade propriedade que você declarou e está acessando é do tipo TUsuários.
A ajuda do delphi diz o seguinte:
[i:e999a495d6]Properties are defined by their access specifiers. Unlike fields, properties cannot be passed as var parameters, nor can the @ operator be applied to a property. The reason is that a property doesn´t necessarily exist in memory. It could, for instance, have a read method that retrieves a value from a database or generates a random value.[/i:e999a495d6]
A ajuda do delphi diz o seguinte:
[i:e999a495d6]Properties are defined by their access specifiers. Unlike fields, properties cannot be passed as var parameters, nor can the @ operator be applied to a property. The reason is that a property doesn´t necessarily exist in memory. It could, for instance, have a read method that retrieves a value from a database or generates a random value.[/i:e999a495d6]
GOSTEI 0