Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Unterschied zwischen Komponente und Form.Komponente (https://www.delphipraxis.net/65465-unterschied-zwischen-komponente-und-form-komponente.html)

xZise 16. Mär 2006 20:05


Unterschied zwischen Komponente und Form.Komponente
 
Ich habe folgendes Problem:
Es gibt 2 Formen ((U/T)Einstellungen und (U/T)Durchsuchen). Auf Einstellungen gibt es ein EditFeld (Ort)... Wenn man jetzt von Durchsuchen den Text verändert, dann wird der neue Text nicht für die Komponente übernommen.

Es gibt dann folgende Konstellation:
Einstellungen.Ort.Text >>> neuer Wert
Ort.Text >>> alter Wert

Und auch noch ein bisschen Code...
Einstellungen:
Delphi-Quellcode:
implementation
  uses
    [...] UDurchsuchen [...];
Delphi-Quellcode:
procedure TEinstellungen.Button2Click(Sender: TObject);
begin
  Durchsuchen.ShowModal;
  Ort.Text := Einstellungen.Ort.Text;
end;
Durchsuchen:
Delphi-Quellcode:
interface

uses
  [...] UEinstellungen;
Delphi-Quellcode:
procedure TDurchsuchen.BitBtn1Click(Sender: TObject);
begin
  Einstellungen.Ort.Text := Ordner.Path;
  close;
end;

mkinzler 16. Mär 2006 20:09

Re: Unterschied zwischen Komponente und Form.Komponente
 
Sehr komisch! In Methoiden von Einstellungen sollte Einstellung.Ort.Text dasselbe sein wie Ort.Text.

Flare 16. Mär 2006 20:19

Re: Unterschied zwischen Komponente und Form.Komponente
 
Zitat:

Delphi-Quellcode:
implementation
  uses
    [...] UDurchsuchen [...];

Seit wann ist dies möglich? Also mir ist bekannt, dass sich Units nicht gegenseitig "benötigen" dürfen. Du müsst also bei dir eine Hauptunit und eine Nebenunit festlegen. Aber eigentlich dürfte es nicht daran liegen, da Delphi ansonsten meckern würde.
Aber warum weißt du
Delphi-Quellcode:
Ort.Text := Einstellungen.Ort.Text;
zu? das ist doch das selbe, oder irre ich mich da jetzt komplett?

MStoll 16. Mär 2006 20:41

Re: Unterschied zwischen Komponente und Form.Komponente
 
Delphi-Quellcode:
Ort.Text = Einstellungen.Ort.Text
Das is nicht unbedingt dasselbe. Einstellungen.Ort.Text bezeichnet Ort.Text in der Instanz "Einstellungen", während Ort.Text sich auf die Instanz des aufrufenden Objekts bezieht. Hättest du zum Beispiel mehrere Instanzen der Klasse "TEinstellungen" (oder wie se jetzt heißt), dann kann das ganz andere Auswirkungen haben.

Gruß
Michael

Thanatos81 16. Mär 2006 22:07

Re: Unterschied zwischen Komponente und Form.Komponente
 
Zitat:

Zitat von Flare
Zitat:

Delphi-Quellcode:
implementation
  uses
    [...] UDurchsuchen [...];

Seit wann ist dies möglich?

Leider schon mindestens seit Delphi 5. Ich hab mich bei der Pflege von Quelltexten von inzwischen ehemaligen Mitarbeitern auch schon oft genug drüber geärgert. Einzige Voraussetzung ist afair, dass unit_a unit_b im interface und unit_b unit_a im implementation referenziert. Machst du es beides Mal im Interface kommt auch ein Compilerfehler.

xZise 17. Mär 2006 16:25

Re: Unterschied zwischen Komponente und Form.Komponente
 
Zitat:

Zitat von Flare
Zitat:

Delphi-Quellcode:
implementation
  uses
    [...] UDurchsuchen [...];

Seit wann ist dies möglich?

Also ich habe einmal das eine in interface und das andere in implemantation zugewiesen.

Zitat:

Zitat von Flare
Aber warum weißt du
Delphi-Quellcode:
Ort.Text := Einstellungen.Ort.Text;
zu? das ist doch das selbe, oder irre ich mich da jetzt komplett?

Weil damit das Problem umgangen wird.

Zitat:

Zitat von MStoll
Das is nicht unbedingt dasselbe. Einstellungen.Ort.Text bezeichnet Ort.Text in der Instanz "Einstellungen", während Ort.Text sich auf die Instanz des aufrufenden Objekts bezieht. Hättest du zum Beispiel mehrere Instanzen der Klasse "TEinstellungen" (oder wie se jetzt heißt), dann kann das ganz andere Auswirkungen haben.

Kann es daran liegen, dass ich einmal Application.CreateForm(etc.) und einmal das schon vorher create? (mit etc. meine ich Einstellungen)

mkinzler 17. Mär 2006 16:29

Re: Unterschied zwischen Komponente und Form.Komponente
 
Zitat:

Kann es daran liegen, dass ich einmal Application.CreateForm(etc.) und einmal das schon vorher create? (mit etc. meine ich Einstellungen)
Dadurch hast du 2 Instanzen der Klasse, welche natürlich 2 verschiedene Wertemengen besitzen.
Wenn du die Formularklassen im Hauptprogramm (dpr) mite CreateForm erzeugst, mußt du sie nicht klasse := tklasse.Create erzeugen!

xZise 17. Mär 2006 17:05

Re: Unterschied zwischen Komponente und Form.Komponente
 
Es kann ja auch sein, dass ein Programm weiter vorne darauf zugreifen muss...

Also muss ein Create weg?

edit: Ich habe das eine Create jetzt weggenommen (nicht das in der dpr) aber jetzt meckert er rum, wenn ich Showmodal mache:
Delphi-Quellcode:
procedure TFFreggels.EinstellungClick(Sender: TObject);
begin
  Einstellungen.ShowModal;
end;
edit2: Okay... Behoben! /edit


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 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