![]() |
Generisches Typecasting?
Hi Leute,
ich möchte dem ActiveControl mit Perform eine WindowsMessage schicken, allerdings möchte ich dazu das Objekt als Objekt seiner Klasse haben und nicht als TWinControl. Wie mache ich das? Meine Idee sieht folgendermaßen aus (Pseudocode!):
Delphi-Quellcode:
Klar, dass das so nicht geht, aber wie kann ich das umsetzen?
(ActiveControl as ActiveControl.ClassType).Perform(...);
:wall: Ok, dass es mit Perform nicht ging, hatte ne andere Ursache, und da spielt es ja keine Rolle, was das Objekt für eine Klasse hat, weil ja über das Handle SendMessage aufgerufen wird. Trotzdem interessiert mich die Lösung der ursprünglichen Frage noch. |
Re: Generisches Typecasting?
Moin!
Du musst das zu TWinControl typecasten, da er bei einem TypeCast wie oben bei dir die Methode nicht kennt. Der Compiler kann nicht feststellen ob es die Methode bei dem Typ gibt zu Compile-Zeit und daher geht es nicht. Und selbst wenn du es auf TWinControl typecastest sollte die Perfom() Botschaft an das spezielisierte Element gehen bzw. dort verarbeitet werden. MfG Muetze1 |
Re: Generisches Typecasting?
Zitat:
|
Re: Generisches Typecasting?
Moin!
Ja, wie gesagt: Der Compiler kann es nicht compilieren, da er die Eigenschaft oder Typ nicht kennt. Der Typecast wird während der Laufzeit erst möglich, da zur Compile Zeit nicht weiss, welches Objekt denn ActiveControl ist. Daher kann er keine Informationen ermitteln, ob die Eigenschaft oder Methode die du spezialisiert nach dem TypeCast aufrufen willst überhaupt existiert. Und sobald er dies nicht weiss, kann er keinen Code generieren, da ihm die Info's dazu fehlen. MfG Muetze1 |
Re: Generisches Typecasting?
Hallo!!!
Meinst DU sowas in der Art:
Delphi-Quellcode:
if self.ActiveControl is TEdit then
(self.ActiveControl as TEdit).Perform(...); |
Re: Generisches Typecasting?
Zitat:
|
Re: Generisches Typecasting?
Was hast Du eigentlich vor? Vielleicht kann der Sinn des Programms weiterhelfen.
Die Methode Perform hat doch auch ein TWinControl, wieso musst Du dann Casten?? Gruß Frank |
Re: Generisches Typecasting?
Zitat:
Zitat:
|
Re: Generisches Typecasting?
Hat echt keiner eine Idee, wie sowas gehen könnte???
|
Re: Generisches Typecasting?
Moin!
Ich habe dir doch nun schon versucht zu schreiben warum es nicht gehen kann, also in wie fern sollte es denn nun noch eine Lösung dazu geben? Unter .NET kannst du es mit dem JustInTime Compiler machen und direkt Quellcode zur Ausführung geben aber mit Delphi Boardmitteln musst du dich immer auf die Klassenebene einigen die die gesuchte Methode bietet. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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