Zitat von
gfjs:
Muss inhereted nun vor oder nach dem eigenen Code stehen oder ist es eventuell sogar egal, wo es steht? Für "Aufklärung" wäre ich dankbar.
Wie Sharky schon gesagt hat : es kann ein Fehler sein, es an der falschen Stelle aufzurufen ! Vielleicht irritiert es auch, daß Delphi in einen leeren begin end Block manchmal automatisch "inherited" hinschreibt. Das geschieht darum, damit man das nicht vergißt. Weil der Block leer ist, steht es eben am "Anfang". Wo sonst ? Gehe ich mal von diesem Code aus :
Delphi-Quellcode:
procedure TZahlenEdit.KeyPress (var Key: Char);
begin
if (not (key in [#8, #9, #44, #48 .. #57])) then
key := #0;
inherited;
end;
Hier ist es egal, wo das steht. So wie es da steht passiert folgendes : falsche Tasten werden auf #0 gesetzt, also quasi gesperrt. Dann werden die Methoden des Original-Edits noch durchlaufen. Bei Vertauschen der 2 Zeilen wäre es so : die Taste wird vom TEdit durchgelassen und erst danach von Deiner Komponente dann abgefangen. Ergo : egal fürs Programm.
Gucke Dir mal Fremdkomponenten an. Da ist es durchaus normal, daß "inherited" irgendwo mittendrin steht. Und auch, daß das in abgeleiteten Komponenten ganz fehlt, das ist alles andere als ein Fehler. Du kannst ja auch das OnKeyPress ganz anders behandeln, als beim TEdit und willst sonst aber alles so lassen. Dann wäre das "inherit" sogar fehl am Platze.