![]() |
Objekteigenschaft übergeben?
Moin !
Gibt es eigentlich die Möglichkeit eine Objekteigenschaft direkt zu übergeben? Wenn ich z.B. eine Procedure aufrufe mit HalloWelt(Edit1.text) dann kommt in der procedure nur der Text an den das Edit1 bereitstellt bzw. wird das wohl ein Zeiger sein :gruebel: Anyway ... Besteht auch die Möglichkeit die Objekteigenschaft zu übertragen so das ich in der Procedure auch die zugehörige Klasse (TEdit) ermitteln kann und auch den Typ der Eigenschaft (in dem Fall String)? Und natürlich auch darüber den Wert auslesen ... Wobei im Prinzip der Eigenschaftstyp und der Wert reichen würden. Hoffe (mal wieder) ich habs einigermassen verständlich umschrieben :stupid: |
Re: Objekteigenschaft übergeben?
Du kannst deiner procedure einen Parameter vom Typ TComponent verpassen:
Delphi-Quellcode:
procdure HalloWelt(AComponent: TComponent);
begin if AComponent is TEdit then TEdit(AComponent).Text := 'Hallo, Welt!' else ShowMessage('Kein TEdit übergeben sondern folgende Klasse: ' + AComponent.ClassName); end; .... .... HalloWelt(Edit1); HalloWelt(Button1); etc... |
Re: Objekteigenschaft übergeben?
Moin !
Zitat:
Hmm erscheint mir etwas kompliziert. Geht das nicht noch einfacher ? |
Re: Objekteigenschaft übergeben?
Wie erkennst du einen "richtigen" Eigenschaftswert?
|
Re: Objekteigenschaft übergeben?
Moin !
Zitat:
Aber da ich noch nichtmal weiss ob das mit den Eigenschaften so überhaupt irgendwie klappen könnte kann ich das nicht wirklich beantworten. |
Re: Objekteigenschaft übergeben?
Was du willst, das geht nicht
und der Trick mit den RTTI geht auch standardmäßig nur mit published Properties. Zitat:
den Namen des Property und dessen Typ. |
Re: Objekteigenschaft übergeben?
Moin himitsu,
ich habs ja schon fast befürchtet :-D Anyway danke für die Aufklärung :thumb: Zitat:
Prinzipiell geht es um das "Problem" aus diesem Thread: ![]() |
Re: Objekteigenschaft übergeben?
Meine Frage zielte eher darauf ab, was du als die richtige ansiehst. Klar, über die RTTI kannst du einen übergebenen String mit den Namen der published Properties vergleichen, und selbst den Typ kann man glaube ich als String da raus holen. Für mich klang es erst so, als wolltest du irgend einen Automatismus haben, der eine (wozu auch immer) passende Eigenschaft automatisch ermittelt, deren Name bei Übergabe u.U. unbekannt ist.
Edit: Dein Vorhaben sieht ![]() |
Re: Objekteigenschaft übergeben?
Moin Medium,
was ich ja im Grunde erreichen möchte ist folgendes: ich möchte vom User erstallbare Verknüpfungen zwischen 2 Objekteigenschaften erreichen. Bsp: wie auch im anderen Fred: 2 Edits. Das was in Edit 1 eingetragen wurde soll nach Enter in Edit 2 erscheinen. In Code wäre das ein einfacher Aufruf von "Edit1.text := Edit2.text". Aber das möchte ich eben für den User editierbar haben. Er soll also aus einer Art "Eingangsliste" Eigenschaften auswählen können die er dann anderen Objekten (bzw. deren Eigenschaften) zuordnen kann. Und das sollte eben recht universell funktionieren also z.B. auch mit Integer werten. |
Re: Objekteigenschaft übergeben?
Das würde ich mit einer nicht-visuellen Komponente lösen, die einen kleinen eigenen Property-Editor mit bringt. Ich hatte da die Tage so ein Ding in der Hand, dass alle auf dem Formular liegende Kompos hat auflisten können, sowie ihre published Properties. Das war Teil einer OPC-Komponentensammlung, wo Eigenschaften direkt angebunden wurden, so dass man selbst kein Polling betreiben muss um die Werte zu aktualisieren. Bei dir wäre die Quelle dann nicht ein OPC Unterbau, sondern eine andere Komponente.
Dieser Editor + Auflistung der Kompos und Eigenschaften ist aber nur die halbe Miete. In dem verlinkten Thread ging es schon darum, wie man nun generisch die Änderung einer beliebigen Eigenschaft einer prinzipiell unbekannten Komponente erkennen kann, und DA liegt dann auch der Hund begraben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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