![]() |
Re: Ändern der Klassenhierarchie
:duck:
mmh sorry hab ich überlesen is wohl schon spät ;) gibts irgendwie eine andere möglichkeit jeder componente ein attribut hinzuzufügen ohne die sourcen zu ändern? |
Re: Ändern der Klassenhierarchie
Wenn Du auf .NET (und Delphi.NET) umsteigst, dann ja. Da wurde das von vornherein mit ins Konzept aufgenommen. Prominentestes Beispiel ist die ToolTip Komponente. In Delphi für Win32 leider: nein.
...:cat:... |
Re: Ändern der Klassenhierarchie
Hallo zusammen
Was ist mit dem is-Operator? Der bekommt die Änderung anscheinend nicht mit und funktioniert nicht mehr. Ich will in einem Message-Handler folgendes realisieren:
Delphi-Quellcode:
Dabei ersetze ich den Vorfahren von TWinControl.
begin
if Self is TWinControl then with TWinControl(Self) do begin {...} end; end; Gruss Shaman |
Re: Ändern der Klassenhierarchie
Zitat:
Greetz alcaeus |
Re: Ändern der Klassenhierarchie
Also, ich ersetze den Vorfahren von TWinControl (TControl) mit:
Delphi-Quellcode:
In den Prozeduren möchte ich nun prüfen, ob Self ein TWinControl ist. Doch bei der is-Abfrage bringt er mir inkompatible Typen. Aber hab grad gemerkt, mit InheritsFrom scheints zu klappen...
type
TControlEx = class(TControl) private procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; procedure WMSetText(var Msg: TWMSetText); message WM_SETTEXT; end; Gruss Shaman |
Re: Ändern der Klassenhierarchie
Zitat:
|
Re: Ändern der Klassenhierarchie
Stimmt ja :wall:
Merci |
Re: Ändern der Klassenhierarchie
Zitat:
Delphi-Quellcode:
function _IsClass(Child: TObject; Parent: TClass): Boolean;
begin Result := (Child <> nil) and Child.InheritsFrom(Parent); end; |
Re: Ändern der Klassenhierarchie
Zitat:
Nachtrag: Bevor die nächste Frage kommt. Einfach selbst testen ;)
Delphi-Quellcode:
type
TBase = class end; T1stDescendant = class(TBase) end; T2ndDescendant = class(TBase) end; TComparedType = class(T2ndDescendant) end; var X : TComparedType; begin if X is TBase then Writeln('ist TBase'); // geht if X is T1stDescendant then Writeln('ist T1stDescendant'); // knallt end. |
Re: Ändern der Klassenhierarchie
Zitat:
Delphi-Quellcode:
Aber das führt zu nix, da man, wie schon gesagt wurde, gleich InheritsFrom benutzen kann. Gut das wir das geklärt haben :stupid:
...
var X : TComparedType; begin if X is TBase then Writeln('ist TBase'); // geht if TObject(X) is T1stDescendant then Writeln('ist T1stDescendant'); // knallt end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 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