OFFTOPIC - Pq ainda non tem Ctrl Click no inherited?

19/01/2006

Ola amigos....

Eu trabalho atualmente c o Delphi6, estava dando uma olhada no delphi2006 p ver se iriam colocar isso..... e ainda non o fizeram..

Eh o seguinte.. qdo agente faz um formulario pai.. e herda ele... no filho aparece o famoso ´Inherited´... Mas seria um bom recurso se pudessemos apertar o Ctrl+click no inherited e ele abrir o formulario pai e direcionar no procedimento certo... como ocorre c outros procedimentos em geral...

Serah q tem algum motivo mto forte p a Borland non ter colocado este recurso? :roll:


Osocram

Respostas

19/01/2006

Michael

Olá!

[b:5d1e190f4d]Ctrl + Click[/b:5d1e190f4d] não age sobre palavras-reservadas da [b:5d1e190f4d]Delphi Language[/b:5d1e190f4d], e [b:5d1e190f4d]inherited [/b:5d1e190f4d]é uma delas. Porém, se vc escrever ´corretamente´ seu código, a combinação mouse-teclado funciona:

procedure TFormHerdado.FormShow(Sender: TObject);
begin
  inherited FormShow(Sender);
  ...
end;


Segure [b:5d1e190f4d]Ctrl [/b:5d1e190f4d]e clique sobre [b:5d1e190f4d]FormShow [/b:5d1e190f4d]que o Delphi irá abrir o código fonte do arquivo pai, posicionando o cursor sobre o método.

[]´s


Responder Citar

19/01/2006

Titanius

Olá! [b:0db50c7a8d]Ctrl + Click[/b:0db50c7a8d] não age sobre palavras-reservadas da [b:0db50c7a8d]Delphi Language[/b:0db50c7a8d], e [b:0db50c7a8d]inherited [/b:0db50c7a8d]é uma delas. Porém, se vc escrever ´corretamente´ seu código, a combinação mouse-teclado funciona:
procedure TFormHerdado.FormShow(Sender: TObject);
begin
  inherited FormShow(Sender);
  ...
end;
Segure [b:0db50c7a8d]Ctrl [/b:0db50c7a8d]e clique sobre [b:0db50c7a8d]FormShow [/b:0db50c7a8d]que o Delphi irá abrir o código fonte do arquivo pai, posicionando o cursor sobre o método. []´s

Fala michael blz?

Ué, como se usa o inherited?

é assim? inherited FormShow(Sender);
ou somente inherited?
ou tanto faz?


eu uso so o inherited mesmo... :D
[]s


Responder Citar

19/01/2006

Michael

Olá Titanius!

Na maioria dos casos, quando apenas se quer executar o código da classe ancestral, basta usar [b:5fbc9faf79]inherited[/b:5fbc9faf79], que o Delphi irá entender o que chamar, pelo contexto do código.

Há situações, porém, que vc pode querer passar um valor diferente para o método-pai. Veja:

TMinhaClasse = class
public
  procedure Calcular(X: Integer); virtual;
  function ObterHora: TTime; virtual;
end;

TMinhaClasse2 = class(TMinhaClasse)
public
  procedure Calcular(X: Integer); override;
  function ObterHora: TTime; override;
end;

(...)

procedure TMinhaClasse2.Calcular(X: integer);
begin
  inherited Calcular(X + 10); // Passando um valor diferente para o método-pai
end;


E, por fim, quando o método é uma função, obrigatoriamente vc tem que chamar [b:5fbc9faf79]inherited [/b:5fbc9faf79]com o nome completo da rotina:

function TMinhaClasse2.ObterHora: TTime;
begin
  Result := inherited ObterHora; // Se deixar só inherited nem compila...
end;


Entendido? ;-)

[]´s


Responder Citar

19/01/2006

Titanius

Entendidissimo Michael... :D

Valeu...


[]s


Responder Citar

19/01/2006

Osocram

Michael

Mto interessante sua resposta.. eu realmente disconhecia isso...

Eu testei e funcou aqui tbm... mto legal... agora temos q falar p o pessoal da Borland deixar isso automatico, neh?

Pelo menos no meu caso isso ajudaria mto... pq se eu tiver q nomear todos Inherited aqui daria mto trabalho tbm...

Vamos ver a prox versao d delphi se vem c isso
heheheh :lol:

Mas valeu a sua resposta... vou usar em alguns lugares q eu uso mto esse Ctrl+click...


Responder Citar