Re: [delphi-br] Sobre inherited - parte 2

2007-05-29 Por tôpico Ricardo Souza
Romário, mais uma vez, valeu pela dica. Quanto os tipos dos atributos, estou
fazendo um programa bem específico (proj. final de faculdade) para um
determinado lugar, não me preocupando em distribuí-lo para outros. A minha
preocupação é, somente, passar e ter o canudo nas mãos, entende? O tempo
está curtíssimo e não estou apto (atualmente) para fazer aquele projeto.
Tenho que fazer um capaz de passar.

Aproveitando, gostaria de pedir uma dica sua, caso vc possa dar e saiba:
estou com uma base de dados no interbase e, quando tento incluir um novo
registro, ele simplesmente é criticado, não deixando gravar por causa do
código que é PK. A minha rotina pra, antes de gravar, é a seguinte:
consulto no banco o último código da seguinte maneira: SELECT * FROM EVENTO
--- SqlEvento.last  codigo:=SqlEvento['codigo_Evento']; Depois o
incremento em 1. Só que, ao fazer esse passo a passo todo para pegar o
último registro, na verdade o registro retornado é o penúltimo e eu não
entendo por que. Será que existe outra forma de fazer isso, com o mesmo
pensamento?


Em 28/05/07, Romario (Listas) [EMAIL PROTECTED] escreveu:

   Ricardo,

 Os atributos da sua classe TUCSacramento podem até estar corretos, mas o
 tipo deles é que acho que estão errados. Você tem OBJETOS na classe
 tratados como String e/ou TDatetime.

 Note que paróquia, curso e celebrante tem vida própria. Ou seja, eles
 existem mesmo que não haja o Sacramento.

 Quanto ao seu problema, só faltou o OVERRIDE na classe Batismo.

 Ficaria assim:

 Classe Sacramento:
 Function Consultar (Var Texto: String; ID: Byte): Byte; Virtual;
 ...
 Function TUCSacramento.Consultar (Var Texto: String; ID: Byte): Byte;
 Begin
 {código a ser executado}
 End;
 --
 Classe Batismo
 Type TUCBatismo = Class (TUCSacramento)
 ...
 Function Consultar (Var Texto: String; ID: Byte): Byte; Override;
 
 Function TUCBatismo.Consultar (Var Texto: String; ID: Byte): Byte;
 Begin
 Inherited;
 {código do consultar batismo a ser executado}
 End;
 --

 Sds,

 Romario

 Ricardo Souza escreveu:
 
  Romário, antes de mais nada, agradeço a atenção dispensada para o meu
  problema. Quanto a ele, os atributos anteriormente informados estão
  corretos, pois a classe sacramento engloba 4 classes especialistas, a
 saber:
  batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
  estão corretos.
 
  E, sobre o problema de executar o que está na function consultar
 localizada
  em sacramento, basta eu colocar o termo virtual e fazer o código
 normalmente
  e, depois, em batismo faço nova declaração da mesma function consultar
 e, no
  corpo dela, incluo inherited para que faça o que antecessor tem + o
 código
  do herdeiro?
  Ex.:
  --
  classe sacramento:
  function consultar (var texto:string;id:byte):byte; virtual;
  ...
  function TUCSacramento.consultar (var texto:string;id:byte):byte;
  begin
  {código a ser executado}
  end;
  --
  classe batismo
  type TUCBatismo = class (TUCSacramento)
  ...
  function consultar (var texto:string;id:byte):byte;
  
  function TUCBatismo.consultar (var texto:string;id:byte):byte;
  begin
  inherited;
  {código do consultar batismo a ser executado}
  end;
  --
 
  É isso mesmo que eu entendi?

  



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Sobre inherited - parte 2

2007-05-29 Por tôpico Joao Morais
Ricardo Souza wrote:
 A minha rotina pra, antes de gravar, é a seguinte:
 consulto no banco o último código da seguinte maneira: SELECT * FROM EVENTO
 --- SqlEvento.last  codigo:=SqlEvento['codigo_Evento']; Depois o
 incremento em 1.

select max(codigo_evento) as cod from evento;

então pega o campo 'cod' e incrementa 1.

--
Joao Morais


Re: [delphi-br] Sobre inherited - parte 2

2007-05-29 Por tôpico Ricardo Souza
João, valeu por ter respondido minha dúvida. Agora com essa informação gerou
outra: o max funciona para campo string? Eu armazeno o código assim:  0001,
0002, 0003 ...  do tipo string; Desculpe perguntar isso pois sou
iniciante e não entendo certas coisas.

Em 29/05/07, Joao Morais [EMAIL PROTECTED] escreveu:

   Ricardo Souza wrote:
  A minha rotina pra, antes de gravar, é a seguinte:
  consulto no banco o último código da seguinte maneira: SELECT * FROM
 EVENTO
  --- SqlEvento.last  codigo:=SqlEvento['codigo_Evento']; Depois o
  incremento em 1.

 select max(codigo_evento) as cod from evento;

 então pega o campo 'cod' e incrementa 1.

 --
 Joao Morais
 



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Sobre inherited - parte 2

2007-05-29 Por tôpico Ricardo César Cardoso
A não ser que eu esteja errado, vc vai ter que fazer um CAST desse valor. Algo 
parecido como:

Select Cast(codigo_EVENTO as Integer) as codEVENTO

Aí se tudo der certo o valor que vai retornar é um inteiro que pode ser 
incrementado em 1. 

Mas primeiro testa a intrução Select num IBConsole ou IBExpert da vida pra ver 
se isto funciona.

Sds,
Ricardo.

Ricardo Souza [EMAIL PROTECTED] escreveu:  
João, valeu por ter respondido minha dúvida. Agora com essa informação gerou
 outra: o max funciona para campo string? Eu armazeno o código assim:  0001,
 0002, 0003 ...  do tipo string; Desculpe perguntar isso pois sou
 iniciante e não entendo certas coisas.
 
 Em 29/05/07, Joao Morais [EMAIL PROTECTED] escreveu:
 
Ricardo Souza wrote:
   A minha rotina pra, antes de gravar, é a seguinte:
   consulto no banco o último código da seguinte maneira: SELECT * FROM
  EVENTO
   --- SqlEvento.last  codigo:=SqlEvento['codigo_Evento']; Depois o
   incremento em 1.
 
  select max(codigo_evento) as cod from evento;
 
  então pega o campo 'cod' e incrementa 1.
 
  --
  Joao Morais
  
 
 
 [As partes desta mensagem que não continham texto foram removidas]
 
 
 
 _



 __
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Sobre inherited - parte 2

2007-05-28 Por tôpico Ricardo Souza
Romário, antes de mais nada, agradeço a atenção dispensada para o meu
problema. Quanto a ele, os atributos anteriormente informados estão
corretos, pois a classe sacramento engloba 4 classes especialistas, a saber:
batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
estão corretos.

E, sobre o problema de executar o que está na function consultar localizada
em sacramento, basta eu colocar o termo virtual e fazer o código normalmente
e, depois, em batismo faço nova declaração da mesma function consultar e, no
corpo dela, incluo inherited para que faça o que antecessor tem + o código
do herdeiro?
Ex.:
---
classe sacramento:
function consultar (var texto:string;id:byte):byte; virtual;
...
function TUCSacramento.consultar (var texto:string;id:byte):byte;
begin
  {código a ser executado}
end;
---
classe batismo
type TUCBatismo = class (TUCSacramento)
...
function consultar (var texto:string;id:byte):byte;

function TUCBatismo.consultar (var texto:string;id:byte):byte;
begin
inherited;
   {código do consultar batismo a ser executado}
end;


É isso mesmo que eu entendi?

Em 27/05/07, Romario (Listas) [EMAIL PROTECTED] escreveu:

   Ricardo,

 Ao meu ver, você está colocando quatro objetos em uma classe só.

 1) Paróquia

 2) Sacramento

 3) Curso

 4) Celebrante

 Identifique as propriedades de cada uma dessas classes e depois monte a
 classe TUCSacramento.

 Ex.:

 Type

 TUCSacramento = Class(TObject)

 Private

 Codigo : Integer;
 Paroquia : TUCParoquia;
 Celebrante : TUCCelebrante;
 Curso : TUCCurso;
 TipoSacramento : String;
 Observacao : String;

 Protected

 Public

 End;

 Quanto ao seu problema, defina o método como VIRTUAL para aproveitar
 as facilidades oferecidas pelo polimorfismo e modificar o comportamento
 do acessor.

 Ex.:

 Function Cadastrar : Boolean; Virtual;

 Function Consultar(Var Texto: String; ID: Byte): Byte; Virtual;

 Sds,

 Romario

 ricardo_sx escreveu:
 
  Há um tempo atrás questionei sobre o termo Inherited, onde me
  informaram que ele significa faça aquele código contido no herdado
  + o código posterior ao termo. Blz.
 
  Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma
  genérica e outra especializada, seguem:
 
  type TUCSacramento = class {classe genérica}
  private
  codigo_Sacramento:string;
  codigo_Paroquiano:string;
  tipo_Sacramento:string;
  celebrante:string;
  data_Inscricao:TDateTime;
  inicio_Curso:TDateTime;
  termino_Curso:TDateTime;
  obs:string;
  public
  function cadastrar:boolean;
  function consultar(var texto:string;id:byte):byte;
  function alterar:boolean; virtual;
  function excluir(codigo:string):boolean;
  end;
 
  function TUCSacramento.consultar(var texto:string;id:byte):byte;
  begin
  texto:='qualquer coisa';
  result:=1;
  end;
 
  e a classe especializada:
 
  type TUCBatismo = class(TUCSacramento)
  private
  padrinho:string;
  madrinha:string;
  diocese_Batismo:string;
  paroquia_Batismo:string;
  data_Batismo:TDateTime;
  livro_Batismo:string;
  folha_Batismo:string;
  numero_Batismo:string;
  public
  function cadastrar:boolean;
  function consultar(var texto:string;id:byte):byte;
  function alterar:boolean; override;
  function excluir(codigo:string):boolean; override;
  end;
 
  function TUCBatismo.consultar(var texto:string;id:byte):byte;
  begin
  inherited;
  result:=2;
  end;
 
  Meu problema é o seguinte: Eu tenho um código pra ser realizado na
  classe Sacramento e um outro na classe batismo. Sendo que na classe
  batismo eu preciso que, antes de executar seu respectivo código,
  realize o código descrito na classe Sacramento. Então pensei nesse
  tal de inherited, porém não estou conseguindo fazê-lo funcionar.
  Será que alguém poderia me ajudar?

 



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Sobre inherited - parte 2

2007-05-28 Por tôpico Joao Morais
Ricardo Souza wrote:
 Romário, antes de mais nada, agradeço a atenção dispensada para o meu
 problema. Quanto a ele, os atributos anteriormente informados estão
 corretos, pois a classe sacramento engloba 4 classes especialistas, a saber:
 batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
 estão corretos.
 
 E, sobre o problema de executar o que está na function consultar localizada
 em sacramento, basta eu colocar o termo virtual e fazer o código normalmente
 e, depois, em batismo faço nova declaração da mesma function consultar e, no
 corpo dela, incluo inherited para que faça o que antecessor tem + o código
 do herdeiro?
 Ex.:
 ---
 classe sacramento:
 function consultar (var texto:string;id:byte):byte; virtual;
 ...
 function TUCSacramento.consultar (var texto:string;id:byte):byte;
 begin
   {código a ser executado}
 end;
 ---
 classe batismo
 type TUCBatismo = class (TUCSacramento)
 ...
 function consultar (var texto:string;id:byte):byte;
 
 function TUCBatismo.consultar (var texto:string;id:byte):byte;
 begin
 inherited;
{código do consultar batismo a ser executado}
 end;
 
 
 É isso mesmo que eu entendi?

Falta alguns detalhes:

Na classe abstrata, inclua o termo virtual depois de cada método que 
você queira especializar. Mas apenas na classe, na implementação você 
não precisa recolocar o virtual.

Na classe especializada, inclua o termo override para os métodos que 
você quer modificar comportamento. Aqui também, apenas na linha que 
declara o método. Na implementação não precisa do override.

Dentro do método que possui um override você usa o inherited para chamar 
o que foi declarado na classe anterior.

Por enquanto é isso, o restante fica para uma futura parte 3 pra não 
complicar além do necessário.

--
Joao Morais



 Em 27/05/07, Romario (Listas) [EMAIL PROTECTED] escreveu:
   Ricardo,

 Ao meu ver, você está colocando quatro objetos em uma classe só.

 1) Paróquia

 2) Sacramento

 3) Curso

 4) Celebrante

 Identifique as propriedades de cada uma dessas classes e depois monte a
 classe TUCSacramento.

 Ex.:

 Type

 TUCSacramento = Class(TObject)

 Private

 Codigo : Integer;
 Paroquia : TUCParoquia;
 Celebrante : TUCCelebrante;
 Curso : TUCCurso;
 TipoSacramento : String;
 Observacao : String;

 Protected

 Public

 End;

 Quanto ao seu problema, defina o método como VIRTUAL para aproveitar
 as facilidades oferecidas pelo polimorfismo e modificar o comportamento
 do acessor.

 Ex.:

 Function Cadastrar : Boolean; Virtual;

 Function Consultar(Var Texto: String; ID: Byte): Byte; Virtual;

 Sds,

 Romario

 ricardo_sx escreveu:
 Há um tempo atrás questionei sobre o termo Inherited, onde me
 informaram que ele significa faça aquele código contido no herdado
 + o código posterior ao termo. Blz.

 Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma
 genérica e outra especializada, seguem:

 type TUCSacramento = class {classe genérica}
 private
 codigo_Sacramento:string;
 codigo_Paroquiano:string;
 tipo_Sacramento:string;
 celebrante:string;
 data_Inscricao:TDateTime;
 inicio_Curso:TDateTime;
 termino_Curso:TDateTime;
 obs:string;
 public
 function cadastrar:boolean;
 function consultar(var texto:string;id:byte):byte;
 function alterar:boolean; virtual;
 function excluir(codigo:string):boolean;
 end;

 function TUCSacramento.consultar(var texto:string;id:byte):byte;
 begin
 texto:='qualquer coisa';
 result:=1;
 end;

 e a classe especializada:

 type TUCBatismo = class(TUCSacramento)
 private
 padrinho:string;
 madrinha:string;
 diocese_Batismo:string;
 paroquia_Batismo:string;
 data_Batismo:TDateTime;
 livro_Batismo:string;
 folha_Batismo:string;
 numero_Batismo:string;
 public
 function cadastrar:boolean;
 function consultar(var texto:string;id:byte):byte;
 function alterar:boolean; override;
 function excluir(codigo:string):boolean; override;
 end;

 function TUCBatismo.consultar(var texto:string;id:byte):byte;
 begin
 inherited;
 result:=2;
 end;

 Meu problema é o seguinte: Eu tenho um código pra ser realizado na
 classe Sacramento e um outro na classe batismo. Sendo que na classe
 batismo eu preciso que, antes de executar seu respectivo código,
 realize o código descrito na classe Sacramento. Então pensei nesse
 tal de inherited, porém não estou conseguindo fazê-lo funcionar.
 Será que alguém poderia me ajudar?


 
 
 [As partes desta mensagem que não continham texto foram removidas]
 
 
 



Re: [delphi-br] Sobre inherited - parte 2

2007-05-28 Por tôpico Ricardo Souza
Caro João, obrigado pelas dicas! vou fazer e ver se funciona. Qualquer coisa
retorno, lembrando que bons filmes têm trilogia e, possivelmente, o meu terá
a parte 3 rsrsrsrs.



Em 28/05/07, Joao Morais [EMAIL PROTECTED] escreveu:

Ricardo Souza wrote:
  Romário, antes de mais nada, agradeço a atenção dispensada para o meu
  problema. Quanto a ele, os atributos anteriormente informados estão
  corretos, pois a classe sacramento engloba 4 classes especialistas, a
 saber:
  batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
  estão corretos.
 
  E, sobre o problema de executar o que está na function consultar
 localizada
  em sacramento, basta eu colocar o termo virtual e fazer o código
 normalmente
  e, depois, em batismo faço nova declaração da mesma function consultar
 e, no
  corpo dela, incluo inherited para que faça o que antecessor tem + o
 código
  do herdeiro?
  Ex.:
  --
  classe sacramento:
  function consultar (var texto:string;id:byte):byte; virtual;
  ...
  function TUCSacramento.consultar (var texto:string;id:byte):byte;
  begin
  {código a ser executado}
  end;
  --
  classe batismo
  type TUCBatismo = class (TUCSacramento)
  ...
  function consultar (var texto:string;id:byte):byte;
  
  function TUCBatismo.consultar (var texto:string;id:byte):byte;
  begin
  inherited;
  {código do consultar batismo a ser executado}
  end;
  --
 
  É isso mesmo que eu entendi?

 Falta alguns detalhes:

 Na classe abstrata, inclua o termo virtual depois de cada método que
 você queira especializar. Mas apenas na classe, na implementação você
 não precisa recolocar o virtual.

 Na classe especializada, inclua o termo override para os métodos que
 você quer modificar comportamento. Aqui também, apenas na linha que
 declara o método. Na implementação não precisa do override.

 Dentro do método que possui um override você usa o inherited para chamar
 o que foi declarado na classe anterior.

 Por enquanto é isso, o restante fica para uma futura parte 3 pra não
 complicar além do necessário.

 --
 Joao Morais

  Em 27/05/07, Romario (Listas) [EMAIL PROTECTED]rbr_vix_es%40yahoo.com.br
 escreveu:
  Ricardo,
 
  Ao meu ver, você está colocando quatro objetos em uma classe só.
 
  1) Paróquia
 
  2) Sacramento
 
  3) Curso
 
  4) Celebrante
 
  Identifique as propriedades de cada uma dessas classes e depois monte a
  classe TUCSacramento.
 
  Ex.:
 
  Type
 
  TUCSacramento = Class(TObject)
 
  Private
 
  Codigo : Integer;
  Paroquia : TUCParoquia;
  Celebrante : TUCCelebrante;
  Curso : TUCCurso;
  TipoSacramento : String;
  Observacao : String;
 
  Protected
 
  Public
 
  End;
 
  Quanto ao seu problema, defina o método como VIRTUAL para aproveitar
  as facilidades oferecidas pelo polimorfismo e modificar o comportamento
  do acessor.
 
  Ex.:
 
  Function Cadastrar : Boolean; Virtual;
 
  Function Consultar(Var Texto: String; ID: Byte): Byte; Virtual;
 
  Sds,
 
  Romario
 
  ricardo_sx escreveu:
  Há um tempo atrás questionei sobre o termo Inherited, onde me
  informaram que ele significa faça aquele código contido no herdado
  + o código posterior ao termo. Blz.
 
  Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma
  genérica e outra especializada, seguem:
 
  type TUCSacramento = class {classe genérica}
  private
  codigo_Sacramento:string;
  codigo_Paroquiano:string;
  tipo_Sacramento:string;
  celebrante:string;
  data_Inscricao:TDateTime;
  inicio_Curso:TDateTime;
  termino_Curso:TDateTime;
  obs:string;
  public
  function cadastrar:boolean;
  function consultar(var texto:string;id:byte):byte;
  function alterar:boolean; virtual;
  function excluir(codigo:string):boolean;
  end;
 
  function TUCSacramento.consultar(var texto:string;id:byte):byte;
  begin
  texto:='qualquer coisa';
  result:=1;
  end;
 
  e a classe especializada:
 
  type TUCBatismo = class(TUCSacramento)
  private
  padrinho:string;
  madrinha:string;
  diocese_Batismo:string;
  paroquia_Batismo:string;
  data_Batismo:TDateTime;
  livro_Batismo:string;
  folha_Batismo:string;
  numero_Batismo:string;
  public
  function cadastrar:boolean;
  function consultar(var texto:string;id:byte):byte;
  function alterar:boolean; override;
  function excluir(codigo:string):boolean; override;
  end;
 
  function TUCBatismo.consultar(var texto:string;id:byte):byte;
  begin
  inherited;
  result:=2;
  end;
 
  Meu problema é o seguinte: Eu tenho um código pra ser realizado na
  classe Sacramento e um outro na classe batismo. Sendo que na classe
  batismo eu preciso que, antes de executar seu respectivo código,
  realize o código descrito na classe Sacramento. Então pensei nesse
  tal de inherited, porém não estou conseguindo fazê-lo funcionar.
  Será que alguém poderia me ajudar?
 
 
 
 
  [As partes desta mensagem que não continham texto 

Re: [delphi-br] Sobre inherited - parte 2

2007-05-28 Por tôpico Romario (Listas)
Ricardo,

Os atributos da sua classe TUCSacramento podem até estar corretos, mas o 
tipo deles é que acho que estão errados. Você tem OBJETOS na classe 
tratados como String e/ou TDatetime.

Note que paróquia, curso e celebrante tem vida própria. Ou seja, eles 
existem mesmo que não haja o Sacramento.


Quanto ao seu problema, só faltou o OVERRIDE na classe Batismo.

Ficaria assim:

Classe Sacramento:
Function Consultar (Var Texto: String; ID: Byte): Byte; Virtual;
...
Function TUCSacramento.Consultar (Var Texto: String; ID: Byte): Byte;
Begin
   {código a ser executado}
End;
-
Classe Batismo
Type TUCBatismo = Class (TUCSacramento)
...
Function Consultar (Var Texto: String; ID: Byte): Byte; Override;

Function TUCBatismo.Consultar (Var Texto: String; ID: Byte): Byte;
Begin
   Inherited;
   {código do consultar batismo a ser executado}
End;
-

Sds,

Romario




Ricardo Souza escreveu:
 
 Romário, antes de mais nada, agradeço a atenção dispensada para o meu
 problema. Quanto a ele, os atributos anteriormente informados estão
 corretos, pois a classe sacramento engloba 4 classes especialistas, a saber:
 batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
 estão corretos.
 
 E, sobre o problema de executar o que está na function consultar localizada
 em sacramento, basta eu colocar o termo virtual e fazer o código normalmente
 e, depois, em batismo faço nova declaração da mesma function consultar e, no
 corpo dela, incluo inherited para que faça o que antecessor tem + o código
 do herdeiro?
 Ex.:
 --
 classe sacramento:
 function consultar (var texto:string;id:byte):byte; virtual;
 ...
 function TUCSacramento.consultar (var texto:string;id:byte):byte;
 begin
 {código a ser executado}
 end;
 --
 classe batismo
 type TUCBatismo = class (TUCSacramento)
 ...
 function consultar (var texto:string;id:byte):byte;
 
 function TUCBatismo.consultar (var texto:string;id:byte):byte;
 begin
 inherited;
 {código do consultar batismo a ser executado}
 end;
 --
 
 É isso mesmo que eu entendi?







[delphi-br] Sobre inherited - parte 2

2007-05-27 Por tôpico ricardo_sx
Há um tempo atrás questionei sobre o termo Inherited, onde me 
informaram que ele significa faça aquele código contido no herdado 
+ o código posterior ao termo. Blz.

Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma 
genérica e outra especializada, seguem:

type TUCSacramento = class  {classe genérica}
  private
codigo_Sacramento:string;
codigo_Paroquiano:string;
tipo_Sacramento:string;
celebrante:string;
data_Inscricao:TDateTime;
inicio_Curso:TDateTime;
termino_Curso:TDateTime;
obs:string;
  public
function cadastrar:boolean;
function consultar(var texto:string;id:byte):byte;
function alterar:boolean; virtual;
function excluir(codigo:string):boolean; 
  end;

function TUCSacramento.consultar(var texto:string;id:byte):byte;
begin
  texto:='qualquer coisa';
  result:=1;
end;


e a classe especializada:

type TUCBatismo = class(TUCSacramento)
  private
padrinho:string;
madrinha:string;
diocese_Batismo:string;
paroquia_Batismo:string;
data_Batismo:TDateTime;
livro_Batismo:string;
folha_Batismo:string;
numero_Batismo:string;
  public
function cadastrar:boolean;
function consultar(var texto:string;id:byte):byte;
function alterar:boolean; override;
function excluir(codigo:string):boolean; override;
  end;

function TUCBatismo.consultar(var texto:string;id:byte):byte;
begin
  inherited;
  result:=2;
end;

Meu problema é o seguinte: Eu tenho um código pra ser realizado na 
classe Sacramento e um outro na classe batismo. Sendo que na classe 
batismo eu preciso que, antes de executar seu respectivo código, 
realize o código descrito na classe Sacramento. Então pensei nesse 
tal de inherited, porém não estou conseguindo fazê-lo funcionar. 
Será que alguém poderia me ajudar?



Re: [delphi-br] Sobre inherited - parte 2

2007-05-27 Por tôpico Romario (Listas)
Ricardo,

Ao meu ver, você está colocando quatro objetos em uma classe só.

1) Paróquia

2) Sacramento

3) Curso

4) Celebrante

Identifique as propriedades de cada uma dessas classes e depois monte a 
classe TUCSacramento.

Ex.:

Type

   TUCSacramento = Class(TObject)

   Private

 Codigo : Integer;
 Paroquia   : TUCParoquia;
 Celebrante : TUCCelebrante;
 Curso  : TUCCurso;
 TipoSacramento : String;
 Observacao : String;

   Protected

   Public

   End;


Quanto ao seu problema, defina o método como VIRTUAL para aproveitar 
as facilidades oferecidas pelo polimorfismo e modificar o comportamento 
do acessor.

Ex.:

Function Cadastrar : Boolean; Virtual;

Function Consultar(Var Texto: String; ID: Byte): Byte; Virtual;


Sds,

Romario




ricardo_sx escreveu:
 
 Há um tempo atrás questionei sobre o termo Inherited, onde me
 informaram que ele significa faça aquele código contido no herdado
 + o código posterior ao termo. Blz.
 
 Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma
 genérica e outra especializada, seguem:
 
 type TUCSacramento = class {classe genérica}
 private
 codigo_Sacramento:string;
 codigo_Paroquiano:string;
 tipo_Sacramento:string;
 celebrante:string;
 data_Inscricao:TDateTime;
 inicio_Curso:TDateTime;
 termino_Curso:TDateTime;
 obs:string;
 public
 function cadastrar:boolean;
 function consultar(var texto:string;id:byte):byte;
 function alterar:boolean; virtual;
 function excluir(codigo:string):boolean;
 end;
 
 function TUCSacramento.consultar(var texto:string;id:byte):byte;
 begin
 texto:='qualquer coisa';
 result:=1;
 end;
 
 e a classe especializada:
 
 type TUCBatismo = class(TUCSacramento)
 private
 padrinho:string;
 madrinha:string;
 diocese_Batismo:string;
 paroquia_Batismo:string;
 data_Batismo:TDateTime;
 livro_Batismo:string;
 folha_Batismo:string;
 numero_Batismo:string;
 public
 function cadastrar:boolean;
 function consultar(var texto:string;id:byte):byte;
 function alterar:boolean; override;
 function excluir(codigo:string):boolean; override;
 end;
 
 function TUCBatismo.consultar(var texto:string;id:byte):byte;
 begin
 inherited;
 result:=2;
 end;
 
 Meu problema é o seguinte: Eu tenho um código pra ser realizado na
 classe Sacramento e um outro na classe batismo. Sendo que na classe
 batismo eu preciso que, antes de executar seu respectivo código,
 realize o código descrito na classe Sacramento. Então pensei nesse
 tal de inherited, porém não estou conseguindo fazê-lo funcionar.
 Será que alguém poderia me ajudar?