![]() |
Gibt es "ME" ?
Gibt es sowas wie das Wort "Me" bei VB auch unter Delphi, womit man das aktuelle Formular ansprechen kann ?
z.B. Form1.Caption ( In VB möglich "Me.Caption") Danke |
Re: Gibt es "ME" ?
Benutz doch einfach Form1.Caption weißt jetzt nicht wo dein Problem ist???
|
Re: Gibt es "ME" ?
Du suchst vermutlich "self" Allerdings wird damit nicht grundsätzlich das aktuelle Formular angesprochen sondern die eigene Instanz der Klasse, was bei Methoden wie ButtonKlick aber dein Formular ist.
Edit @Larsi: Form1.Irgendwas zu schreiben ist schlechter Stil. Dadurch wird das ganze an eine bestimmte Instanz gebunden und ist somit weniger leicht portierber. |
Re: Gibt es "ME" ?
Es heist Self !!
edit: roter Kasten aber es ist schon richtig: Self entspricht Me und zwar 100 Prozent. |
Re: Gibt es "ME" ?
das nennt sich Self, also in den Klassen,
aber du kannst es meistens auch weglassen, da dieses sozusagen als Standardnamespace innerhalb der Klasse existiert.
Delphi-Quellcode:
[add]
procedure TForm1.FormCreate(Sender: TObject);
begin Form1.Caption // an Variable gebunden Self.Caption // an Klasse gebunden Caption end; roter kasten ist gut ... hatte zwar einen, aber da stand nur Larsi drin :shock: [edit] Kommentare geändeert :angel2: |
Re: Gibt es "ME" ?
Form1.Caption hingegen verweist immer auf die Eigenschaft Caption, die im Rahmen von TForm an die Variable Form1 gebunden ist. Wenn Du aus der Methode eines Objekts heraus Felder von genau der selben Instanz -also unabhängig von der Bindung an eine konkrete Variable- ansprechen willst, nutze "self".
|
Re: Gibt es "ME" ?
@Baby007: Herzlich willkommen in der DP. Zu Deiner Frage: Du suchst das Schlüsselwort self.
@Larsi: Mit solchen Aussagen provizierst Du Fehler. Die Verwendung des Instanzenbezeichners (Form1) macht das Objekt für weitere Instanzierungen (z.B. mehrere MDI-Forms des selben Typs) unbrauchbar. Gruß onlinekater [Edit]Ratschläge, irgendetwas in einer Objektdeklaration an eine feste Instanz zu binden, läßt auch schonmal den roten Kasten übersehen :) [/Edit] |
Re: Gibt es "ME" ?
Falls ich die Formulare einen Namen gebe, der manchmal auch mal etwas länger sein kann :lol: , muß ich das immer wieder eingeben oder per Copy/Past arbeiten. Unter VB z.B kann ich , wenn ich im aktuellel Formular bin, immer "Me" benutzen.
Ja, self ist genau das, was ich gesucht habe. Danke an alle für die schnelle Antwort ! |
Re: Gibt es "ME" ?
Wenn du im aktuellen Formular bist(sprich: In Methoden deiner Form-Klasse) brauchst du nichtmal self, es reicht einfach "Caption:='blar'" zu schreiben.
|
Re: Gibt es "ME" ?
Self braucht man nur, um Namenskonflikte zu lösen oder wenn man eine Referenz auf Self übergeben will.
Beispiel für ersteres: (Die Methode Wuppdi soll das Feld "Value" auf den übergebenen Wert setzen)
Delphi-Quellcode:
Ohne das Self.Value würde die Anweisung den Parameter auf sich selbst zuweisen.
procedure TMyClass.Wuppdi(Value: Integer);
begin Self.Value:=Value; end; Beispiel für letzteres: Hier soll die Methode CreateChild eine neue Instanz von TMyClass erstellen, deren "Vater" auf sich selbst setzen und die neue Instanz dann zurückgeben.
Delphi-Quellcode:
function TMyClass.CreateChild: TMyClass;
begin Result:=TMyClass.Create; Result.SetParent(Self); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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