segunda-feira, 14 de setembro de 2009

Meu Amor Vai Bem, Meu Mundo Vai Mal

Para aqueles que gostam de poesia e cultura, de momentos de leitura agradáveis, aí vai uma dica, o livro que meu irmão lançou, está disponível para download gratuitamente.
Na página dele vocês terão a oportunidade de saber mais sobre o livro, os motivos que levaram meu irmão a colocá-lo gratuitamente na internet, vocês vão gostar tenho certeza. A capa do mesmo está no banner ao lado, confira!


Não deixem de visitar e quem fizer o download, por favor comentem pelo menos que fizeram o download  e que vão apreciar a obra.

Obrigado à todos !

Clique no link para baixar o livro
Livro de poesia grátis

quarta-feira, 9 de setembro de 2009

Criando uma instância de classe à partir do seu nome (string)

Amigos estou trazendo um exemplo de como criar uma classe à partir de seu nome ( String ),  eu já vi alguns exemplos de como fazer isso utilizando forms, mas para classes normais eu ainda não tinha visto nenhum exemplo, então segue abaixo a solução que eu criei.
1- Primeiro crie um form simples como o da figura abaixo tendo 3 edits , 1 bitbtn e 2 labels;
2- Renomeie os componentes conforme o exemplo, por favor.
3- É só clicar no botão e acompanhar ( debug ) para ver o que é feito no código, o efeito de tela nada mais é que o preenchimento dos dois edits de baixo com o valor das propriedades setadas no código.
4- No meu caso a primeira classe eu fiz descendente de TDataModule por uma necessidade minha, mas na realidade ela deve ser descendente de TPersistent



Imagem do form



unit UCriarClasseString;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, AdvSmoothDock, jpeg, ExtCtrls, StdCtrls, Buttons;


type


TminhaClasse = class (TDataModule)
private
FPrimeiraClasse: String;
procedure SetPrimeiraClasse(const Value: String);
published
property PrimeiraClasse:String read FPrimeiraClasse
write SetPrimeiraClasse;
end;


TMinhaSegundaClasse = class(TminhaClasse)
private
FSegundaClasse: STring;
procedure SetSegundaClasse(const Value: STring);
published
property SegundaClasse:STring read FSegundaClasse
write SetSegundaClasse;
end;

TfrmCriarClasseString = class(TForm)
btClasse: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure btClasseClick(Sender: TObject);
private
{ Private declarations }
procedure InstanceClasse(AClassName: String);
public
{ Public declarations }
end;

var
frmCriarClasseString: TfrmCriarClasseString;

implementation


{$R *.dfm}


procedure TfrmCriarClasseString.btClasseClick(Sender: TObject);
begin
InstanceClasse(Edit1.Text);
end;

procedure TfrmCriarClasseString.InstanceClasse
(AClassName: String);
var
lObj: TMinhaSegundaClasse;
Pers: TPersistentClass;
begin
Pers := GetClass(AClassName);
lObj := (Pers.Create) as TMinhaSegundaClasse;

if Assigned(lObj) then
try
lObj.FPrimeiraClasse := 'Propriedade da Classe ancestral';
lObj.FSegundaClasse := 'Propriedade da Segunda Classe';
Edit2.Text :=lObj.FPrimeiraClasse;
Edit3.Text :=lObj.FSegundaClasse;
finally
lObj.Free;
end
end;


{ TminhaClasse }

procedure TminhaClasse.SetPrimeiraClasse(const Value: String);
begin
FPrimeiraClasse := Value;
end;


{ TMinhaSegundaClasse }
procedure TMinhaSegundaClasse.SetSegundaClasse(const
Value: STring);
begin
FSegundaClasse := Value;
end;


initialization
RegisterClasses([TminhaClasse, TMinhaSegundaClasse]);

end.


Link para os arquivos:
UCriarClasseString.pas
UCriarClasseString.dfm

segunda-feira, 14 de setembro de 2009 às 17:29 | 0 comentários  
Para aqueles que gostam de poesia e cultura, de momentos de leitura agradáveis, aí vai uma dica, o livro que meu irmão lançou, está disponível para download gratuitamente.
Na página dele vocês terão a oportunidade de saber mais sobre o livro, os motivos que levaram meu irmão a colocá-lo gratuitamente na internet, vocês vão gostar tenho certeza. A capa do mesmo está no banner ao lado, confira!


Não deixem de visitar e quem fizer o download, por favor comentem pelo menos que fizeram o download  e que vão apreciar a obra.

Obrigado à todos !

Clique no link para baixar o livro
Livro de poesia grátis
Postado por José Henrique
Amigos estou trazendo um exemplo de como criar uma classe à partir de seu nome ( String ),  eu já vi alguns exemplos de como fazer isso utilizando forms, mas para classes normais eu ainda não tinha visto nenhum exemplo, então segue abaixo a solução que eu criei.
1- Primeiro crie um form simples como o da figura abaixo tendo 3 edits , 1 bitbtn e 2 labels;
2- Renomeie os componentes conforme o exemplo, por favor.
3- É só clicar no botão e acompanhar ( debug ) para ver o que é feito no código, o efeito de tela nada mais é que o preenchimento dos dois edits de baixo com o valor das propriedades setadas no código.
4- No meu caso a primeira classe eu fiz descendente de TDataModule por uma necessidade minha, mas na realidade ela deve ser descendente de TPersistent



Imagem do form



unit UCriarClasseString;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, AdvSmoothDock, jpeg, ExtCtrls, StdCtrls, Buttons;


type


TminhaClasse = class (TDataModule)
private
FPrimeiraClasse: String;
procedure SetPrimeiraClasse(const Value: String);
published
property PrimeiraClasse:String read FPrimeiraClasse
write SetPrimeiraClasse;
end;


TMinhaSegundaClasse = class(TminhaClasse)
private
FSegundaClasse: STring;
procedure SetSegundaClasse(const Value: STring);
published
property SegundaClasse:STring read FSegundaClasse
write SetSegundaClasse;
end;

TfrmCriarClasseString = class(TForm)
btClasse: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure btClasseClick(Sender: TObject);
private
{ Private declarations }
procedure InstanceClasse(AClassName: String);
public
{ Public declarations }
end;

var
frmCriarClasseString: TfrmCriarClasseString;

implementation


{$R *.dfm}


procedure TfrmCriarClasseString.btClasseClick(Sender: TObject);
begin
InstanceClasse(Edit1.Text);
end;

procedure TfrmCriarClasseString.InstanceClasse
(AClassName: String);
var
lObj: TMinhaSegundaClasse;
Pers: TPersistentClass;
begin
Pers := GetClass(AClassName);
lObj := (Pers.Create) as TMinhaSegundaClasse;

if Assigned(lObj) then
try
lObj.FPrimeiraClasse := 'Propriedade da Classe ancestral';
lObj.FSegundaClasse := 'Propriedade da Segunda Classe';
Edit2.Text :=lObj.FPrimeiraClasse;
Edit3.Text :=lObj.FSegundaClasse;
finally
lObj.Free;
end
end;


{ TminhaClasse }

procedure TminhaClasse.SetPrimeiraClasse(const Value: String);
begin
FPrimeiraClasse := Value;
end;


{ TMinhaSegundaClasse }
procedure TMinhaSegundaClasse.SetSegundaClasse(const
Value: STring);
begin
FSegundaClasse := Value;
end;


initialization
RegisterClasses([TminhaClasse, TMinhaSegundaClasse]);

end.


Link para os arquivos:
UCriarClasseString.pas
UCriarClasseString.dfm
Postado por José Henrique Marcadores: ,