![]() |
"inherited" in Windows-Messages?
Hm, ich bin verwirrt :spin2: und möchte das gern einmal geklärt haben. Die Verwendung einer Windows-Message könnte z.B. wie nachstehend aussehen (nicht von mir)...
Delphi-Quellcode:
Warum steht vor dem individuellen Code das "inherited"? Was wird denn hier "geerbt oder vererbt"? Ich finde solche Codeschnipsel auch zuhauf ohne jedes "inherited". Auch kann ich keinen Unterscheid im Programmverhalten feststellen, egal ob mit oder ohne "inherited". Ist "inherited" nun immer/manchmal oder nie erforderlich :pale:
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin inherited; if Message.Result = htClient then Message.Result := htCaption; end; Gruß aus Hamburg :hi: |
Re: "inherited" in Windows-Messages?
es wird zuerst der Code der entsprechenden Methode der Superklasse aufgerufen.
|
Re: "inherited" in Windows-Messages?
Ok, also die Superklasse wird aufgerufen - bedeutet das nun, dass dieser Aufruf immer notwendig ist?
|
Re: "inherited" in Windows-Messages?
Es kommt darauf an. wenn dein Code zusätzlich ausgeführt werden soll: ja; wenn er anstatt des geerbten Codes ausgeführt werden soll: nicht.
Beim Konstruktor z.B. würde ich es auf Jedenfall machen |
Re: "inherited" in Windows-Messages?
Nein, nur wenn du ihr die Bearbeitung ermöglichen möchtest.
|
Re: "inherited" in Windows-Messages?
Ok, dann bin ich jetzt schlauer! Danke :hello:
|
Re: "inherited" in Windows-Messages?
Eben es kommt immer drauf an, was du damit bewirken willst. Du reichst mit Inherited einfach nur zur geerbten Klasse weiter...
Die Hilfe hilft da auch :zwinker: Zitat:
|
Re: "inherited" in Windows-Messages?
Ah, ja, ich bin seit 25 Jahren Hobby-Programmierer und habe immer noch Schwierigkeiten mit der Objektorientierung :( - diesen Hilfetext (genau den) hatte ich mir auch angesehen. Aber nun zu meinem Ehrenrettungs-Versuch: Ich hatte mir gedacht, dass die Nutzung von Windows-Messages etwas anders ist. So im Sinne von "eingeschleiftem Code", also das quasi automatisch alles "vor und hinterher" sowieso aufgerufen wird und "mein Code" einfach "dazwischengeschoben wird". Hm, ist das verständlich, was ich da gedacht hatte?
|
Re: "inherited" in Windows-Messages?
Verstädlich schon, aber eben falsch. Du fängst ja keine Botschaft ab und reichst sie weiter, sondern überschreibst die implementierte Methode der Klasse die die Botschaft verarbeitet. Damit ist das nichts anderes wie jede andere virtuelle Methode (zumindest was das inherited betrifft).
Gruß oki |
Re: "inherited" in Windows-Messages?
Kann schon sein, dass ich mit der VCL langsam nicht mehr so vertraut bin, aber als ich das letzte Mal einen Blick in forms.pas geworfen habe, waren dort alle Botschaftsmethoden statisch :zwinker: (was sich ja auch mit dem zitierten OH-Text deckt).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz