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.