Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Objekt an Prozedur übergeben
Visum - Sa 17.08.02 14:21
Titel: Objekt an Prozedur übergeben
Hi,
ich möchte (fast) beliebiges Objekt als Parameter an eine Prozedur übergeben.
Das wären etwa Images, Edit-Felder, Buttons und Labels.
Geht das? bzw. Wie geht das?
Oder muss ich dann Position und Größe des Objekts einzeln übergeben? (weil das sind die einzigen Parameter, die ich von den Objekten brauche?
Visum
Ex0rzist - Sa 17.08.02 14:50
Klar geht das. Zum Beispiel so:
Quelltext
1: 2: 3: 4:
| procedure WriteIrgendwas(Objekt: TLabel;Was: String); begin Objekt.Caption := Was; end; |
Gruß,
Ex0rzist
OregonGhost - Sa 17.08.02 14:57
Du kannst statt TLabel im Idealfall TObject nehmen, das in der Klassenhierarchie ganz oben steht. Dann kannst aber ohne Downcasting nicht die gewünschten Eigenschaften verwenden.
Stattdessen solltest du den in der Klassenhierarchie höchsten Typ nehmen, der alle deine benötigten Eigenschaften aufweist, z.B. TControl in deinem Fall.
Wenn du wie Ex0rzist schreibt TLabel nimmst, hat das den Nachteil, das du entweder ein Typcasting machen musst, oder halt nur TLabels übergeben kannst. Wenn du TControl nimmst, kannst auch TButton, TLabel oder TImage übergeben.
GPF - So 18.08.02 02:42
Dem Post von OregonGhost sind nur zwei kleine Anmerkungen hinzuzufügen:
Über den Operator
IS kannst Du den Typ eines Objektes ermitteln.
Ist
obj z.B. ein Verweis auf ein
TObject, so kannst Du über
Quelltext
1: 2:
| if obj is TEdit then TEdit(obj).Text:='TEST'; |
abfragen ob obj ein Objekt vom Typ TEdit ist und dann über Typecasting (2.Zeile) auf die Eigenschaften und Methoden des TEdits zugreifen.
Eine case-Abfrage des Typs ist soweit ich weiß nicht möglich.
Außerdem wenn
Edit1 ein Objekt vom Typ
TEdit ist sind folgende Aussagen wahr:
Quelltext
1: 2: 3: 4: 5: 6:
| Edit1 is TObject Edit1 is TPersistent Edit1 is TComponent Edit1 is TControl Edit1 is TWinControl Edit1 is TCustomEdit |
, da TEdit ein Nachfahre zu den genannten Objekten ist und alle deren Eigenschaften ererbt!
Das empfehlenswerte Buch
Delphi in a Nutshell erklärt sehr tiefgehend die Beziehung von Objekten, deren Speicherabbildungen, Zugriffe, Vererbung, Objekthierarchien und Polymorpheismus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!