Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Objekteigenschaft übergeben? (https://www.delphipraxis.net/144127-objekteigenschaft-uebergeben.html)

moelski 30. Nov 2009 20:18


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:

Andreas L. 30. Nov 2009 20:22

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...

moelski 30. Nov 2009 20:36

Re: Objekteigenschaft übergeben?
 
Moin !

Zitat:

Du kannst deiner procedure einen Parameter vom Typ TComponent verpassen
Ok das würde auch funktionieren. Aber damit habe ich noch nicht den richtigen Eigenschaftswert. Den könnte man evtl. als String mitgeben und dann über RTTI (TypInfo) auslesen ob a) der Wert existiert, b) welcher Typ es ist und c) den Wert auslesen.

Hmm erscheint mir etwas kompliziert. Geht das nicht noch einfacher ?

Medium 30. Nov 2009 20:42

Re: Objekteigenschaft übergeben?
 
Wie erkennst du einen "richtigen" Eigenschaftswert?

moelski 30. Nov 2009 20:49

Re: Objekteigenschaft übergeben?
 
Moin !

Zitat:

Wie erkennst du einen "richtigen" Eigenschaftswert?
Gute Frage. Über RTTI und eine Typbestimmung?

Aber da ich noch nichtmal weiss ob das mit den Eigenschaften so überhaupt irgendwie klappen könnte kann ich das nicht wirklich beantworten.

himitsu 30. Nov 2009 20:50

Re: Objekteigenschaft übergeben?
 
Was du willst, das geht nicht

und der Trick mit den RTTI geht auch standardmäßig nur mit published Properties.

Zitat:

Gute Frage. Über RTTI und eine Typbestimmung?
die RTTI gibt den Pointer zur Setter- und Getter-Prozedur raus, soweit vorhanden,
den Namen des Property und dessen Typ.

moelski 30. Nov 2009 20:55

Re: Objekteigenschaft übergeben?
 
Moin himitsu,

ich habs ja schon fast befürchtet :-D

Anyway danke für die Aufklärung :thumb:

Zitat:

und der Trick mit den RTTI geht auch standardmäßig nur mit published Properties.
Ok das wäre gegeben. Naja mal sehen wie ich das nun löse.

Prinzipiell geht es um das "Problem" aus diesem Thread:
http://www.delphipraxis.net/internal...t.php?t=169459

Medium 30. Nov 2009 20:55

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 diesem hier ziemlich ähnlich scheint mir.

moelski 30. Nov 2009 21:06

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.

Medium 30. Nov 2009 21:18

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 14:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz