AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gibt es "ME" ?

Ein Thema von Baby007 · begonnen am 24. Feb 2008 · letzter Beitrag vom 24. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Baby007

Registriert seit: 14. Jan 2008
3 Beiträge
 
#1

Gibt es "ME" ?

  Alt 24. Feb 2008, 11:31
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
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:31
Benutz doch einfach Form1.Caption weißt jetzt nicht wo dein Problem ist???
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:33
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.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:33
Es heist Self !!

edit: roter Kasten

aber es ist schon richtig: Self entspricht Me und zwar 100 Prozent.
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#5

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:35
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:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Caption // an Variable gebunden

  Self.Caption // an Klasse gebunden
  Caption
end;
[add]
roter kasten ist gut ... hatte zwar einen, aber da stand nur Larsi drin

[edit]
Kommentare geändeert
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:35
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".
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#7

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:36
@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]
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Baby007

Registriert seit: 14. Jan 2008
3 Beiträge
 
#8

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:41
Falls ich die Formulare einen Namen gebe, der manchmal auch mal etwas länger sein kann , 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 !
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:46
Wenn du im aktuellen Formular bist(sprich: In Methoden deiner Form-Klasse) brauchst du nichtmal self, es reicht einfach "Caption:='blar'" zu schreiben.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Gibt es "ME" ?

  Alt 24. Feb 2008, 11:53
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:
procedure TMyClass.Wuppdi(Value: Integer);
begin
  Self.Value:=Value;
end;
Ohne das Self.Value würde die Anweisung den Parameter auf sich selbst zuweisen.


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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
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