róznica miedzy Self a Application

0

czesc!
mam pytanko:
jaka jest różnica miedzy:
forma := TForm.Create(Self)
a
forma := TForm.Create(Application)

chodzi mi o róznice między słowami Self i Application

Z góry dzięki!

0

Chodzi o to, że jeżeli kod będzie wykonywany w obiekcie np. Form1 to wtedy Self=Form1.

0

dzięki.

0

Tu chodzi o Ownera, czyli o właściciela formy. Self jest wskażnikiem na samą siebie ( z tego kodu jednak wynika że właścicielem formy jest inna forma, powieważ gdyby właścicielem formy była ona sama to byłoby Form1:=TForm1.Create(Form1.Self);, ale by się wywaliło) natomiast Application Jest adresem obiektu aplikacji, czyli właścicielem formy jest aplikacja, a nie inna forma lub ona sama

0

Nie dokońca zgadzam się z tobą Johnny_bit. Poprawny zapis to: Form1:=TForm1.Create(Form1);, ponieważ nie istnieje coś takiego jak Form1.Self. Następnie można by było wywołać to w ten sposób, ponieważ obiekt nie musi mieć Ownera, a przed wywołaniem konstruktora Form1=Nil, ale wtedy forma nie będzie miała ownera.

0

Tu chodzi o Ownera, czyli o właściciela formy. Self jest wskażnikiem na samą siebie

Troszkę nie tak. Według pomocy:
"Within the implementation of a method, the identifier Self references the object in which the method is called."
Wynika z tego, że np. w takim wywołaniu:

procedure TForm1.Button1Click(Sender: TObject);
begin
B := TForm1.Create(Self);
B.Parent := Self;
B.Show;
end;

Self wskazuje na TForm1, gdyż metoda Button1Click jest wywoływana z obiektu TForm1. W tym wypadku właścicielem formy będzie Form1.
Natomiast taki kod:

procedure TForm1.Button1Click(Sender: TObject);
begin
B := TForm1.Create(Application);
B.Show;
end;

To właścicielem będzie Application.

Czyli nazwa jest troszkę myląca. Self nie wskazuje na obiekt, który ma być utworzony, a na obiekt, który wywołuje metodę, w której jest używane Self.

1 użytkowników online, w tym zalogowanych: 0, gości: 1