Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Daten in neues Formular übertragen? (https://www.delphipraxis.net/160811-daten-neues-formular-uebertragen.html)

Dryteak 1. Jun 2011 18:32

Daten in neues Formular übertragen?
 
Hallo,
ich bin ein Delphi Neuling und wollte für ein Freund ein Programm erstellen. Mein Problem ist ich habe in Form1 (bzw. Unit1) ein Edit wo man denn Name eintragen soll. Durch ein Klick auf ein Button geht ein neues Fenster auf (Unit 2) und der Eingegebene Name soll dabei in ein Label in Unit2 übertragen werden.
Das öffnen des Fensters ist kein Problem (Form2.ShowModal;) aber wie Übertrage ich die Eingebenen Daten auf Form 1 auf Form 2?

Danke für eure Hilfe

s.h.a.r.k 1. Jun 2011 18:46

AW: Daten in neues Formular übertragen?
 
Du fügst Form2 eine Property hinzu:
Delphi-Quellcode:
TForm2 = class(TForm)
private
  FUsername : String;
public
  // Hier könntest auch noch Getter und Setter nutzen, anstatt
  // dem direkten Zugriff auf die private-Variable
  property Username : String read FUsername write FUsername;
end;
Und kannst dann vor dem ShowModal-Aufruf den Namen setzen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(nil);
  try
    Form2.Username := Edit1.Text;
    Form2.ShowModal();
  finally
    Form2.Free();
  end;
end;
Was ich noch vergessen haben: Die Anzeige des Namens kannst du dann im OnShow-Ereignis von Form2 setzen:
Delphi-Quellcode:
procedure TForm2.OnShow();
begin
  Label1.Caption := FUsername;
end;
Und noch was habe ich vergessen: Herzlich Willkommen in der DP! :dp:

zeras 1. Jun 2011 19:27

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1104180)
Du fügst Form2 eine Property hinzu:
Delphi-Quellcode:
TForm2 = class(TForm)
private
  FUsername : String;
public
  // Hier könntest auch noch Getter und Setter nutzen, anstatt
  // dem direkten Zugriff auf die private-Variable
  property Username : String read FUsername write FUsername;
end;

Mal zum Verständnis. Warum nimmt man nicht Username als String ins public? Das geht doch auch.

s.h.a.r.k 1. Jun 2011 20:22

AW: Daten in neues Formular übertragen?
 
Weil man dann einfach Setter und Getter einfügen kann. Ich mache das immer so, sonst muss ich immer so viel umschreiben :stupid:

Sir Rufo 1. Jun 2011 23:34

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1104192)
Weil man dann einfach Setter und Getter einfügen kann. Ich mache das immer so, sonst muss ich immer so viel umschreiben :stupid:

Wenn man hier eine Setter-Methode benutzen würde, könnte man auch direkt in das Label schreiben.
Dann ist es ein Aufwasch.

Delphi-Quellcode:
procedure SetUsername( const Value : String );
begin
  FUsername := Value;
  Label1.Caption := Format( 'Benutzer %s ist angemeldet', [ Value ] );
end;

Dryteak 2. Jun 2011 16:37

AW: Daten in neues Formular übertragen?
 
Danke für eure Hilfe es klappt. Da ich ziemlicher Anfänger bin möchte ich euch noch mit einer Frage Nerven:
Ich kriege es einfach nicht eine Combobox (csDropDownList) mit Einträgen zu füllen...

Ich wäre sehr dankbar wenn ihr mir da auch noch Helfen könnt.
Könnt ihr mir noch eine Website oder ein Buch zu Delphi emfehlen?

Ich wünsche noch einen Schönen Vatertag

zeras 2. Jun 2011 16:39

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von Dryteak (Beitrag 1104327)
Ich kriege es einfach nicht eine Combobox (csDropDownList) mit Einträgen zu füllen...

Delphi-Quellcode:

ComboBox.Items.Add('dein text');

Dryteak 2. Jun 2011 18:08

AW: Daten in neues Formular übertragen?
 
Hallo,

erstmal Danke für deine Antwort aber wo muss ich das einfügen bei OnClick?

Ich weis Anfänger nerven... ;-)

omata 2. Jun 2011 18:38

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von zeras (Beitrag 1104187)
Warum nimmt man nicht Username als String ins public? Das geht doch auch.

Wenn ich das schon höre! Es geht nicht um schnell schnell, sondern es geht um innere Schönheit, also sicheren und erweiterungsfreudigen Code zu schreiben. Wenn man solche Variablen einfach so nach außen sichtbar macht, kann man keine Schutzmechanismen mehr realisieren, die Schnittstelle nach außen ist ungeschützt.

Zitat:

Zitat von zeras (Beitrag 1104328)
Delphi-Quellcode:
ComboBox.Items.Add('dein text');

Oh bitte nicht! Benötigt wird folgendes
Delphi-Quellcode:
ComboBox.Items.Append('dein text');
Oder benötigst du die Einfügeposition?

zeras 2. Jun 2011 18:45

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von omata (Beitrag 1104333)
Zitat:

Zitat von zeras (Beitrag 1104187)
Warum nimmt man nicht Username als String ins public? Das geht doch auch.

Wenn ich das schon höre!

Ich wollte nur wissen, was daran besser ist, da ich das bisher nicht so gemacht hatte. Ich möchte mich auch gern belehren lassen. Es gibt immer was neues. Dann muss aber auch eine Info kommen, warum das besser ist. Nun habe ich das verstanden.

omata 2. Jun 2011 18:48

AW: Daten in neues Formular übertragen?
 
@zeras: War nicht bös gemeint, sorry :hi:

Stevie 2. Jun 2011 20:01

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von omata (Beitrag 1104333)
Zitat:

Zitat von zeras (Beitrag 1104328)
Delphi-Quellcode:
ComboBox.Items.Add('dein text');

Oh bitte nicht! Benötigt wird folgendes
Delphi-Quellcode:
ComboBox.Items.Append('dein text');
Oder benötigst du die Einfügeposition?

Zitat: "Oh, bitte nicht!" ...
Append macht nämlich nix anderes, als Add aufzurufen... :stupid::roll:

omata 2. Jun 2011 23:08

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von Stevie (Beitrag 1104346)
Append macht nämlich nix anderes, als Add aufzurufen... :stupid::roll:

Das hat dabei rein gar keine Aussagekraft! Darum geht es nämlich nicht! Es geht um den Sinn, was man da eigentlich macht. Schalte mal die "Erweiterte Syntax" aus, dann wirst du verstehen was ich meine.

Stevie 2. Jun 2011 23:15

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von omata (Beitrag 1104358)
Zitat:

Zitat von Stevie (Beitrag 1104346)
Append macht nämlich nix anderes, als Add aufzurufen... :stupid::roll:

Das hat dabei rein gar keine Aussagekraft! Darum geht es nämlich nicht! Es geht um den Sinn, was man da eigentlich macht. Schalte mal die "Erweiterte Syntax" aus, dann wirst du verstehen was ich meine.

Warum sollte ich was ausschalten, wozu in der Hilfe folgendes steht:
Zitat:

Anmerkung: Die Direktive $X dient lediglich der Abwärtskompatibilität. Verwenden Sie daher {$X-} nicht in Ihren Delphi-Anwendungen.
Willkommen im Jahre 2011, wo man auch Funktionen aufrufen kann, ohne den Rückgabewert zu verwenden...

omata 2. Jun 2011 23:28

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von Stevie (Beitrag 1104359)
Willkommen im Jahre 2011, wo man auch Funktionen aufrufen kann, ohne den Rückgabewert zu verwenden...

Das war mir klar, dass mein Einwand nicht verstanden wird.

scrat1979 3. Jun 2011 08:23

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von Dryteak (Beitrag 1104329)
Hallo,

[...]

Ich weis Anfänger nerven... ;-)

Generell nerven Anfänger nicht wenn sie entsprechende Eigeninitiative zeigen. JEDER hier hat mal klein angefangen! Du solltest Dir mal ein Grundlagentutorial anschauen (siehe Suchfunktion...), da wird Dir bestimmt einiges klar! Gibt auch zur Komponentenentwicklung einige. Ohne Fleißarbeit geht es eben leider nicht :-)

Viel Spaß noch beim Programmieren :thumb:

p80286 3. Jun 2011 09:33

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von omata (Beitrag 1104361)
Zitat:

Zitat von Stevie (Beitrag 1104359)
Willkommen im Jahre 2011, wo man auch Funktionen aufrufen kann, ohne den Rückgabewert zu verwenden...

Das war mir klar, dass mein Einwand nicht verstanden wird.

Dann erklär es doch bitte einmal!
Gefühlt halte ich nichts davon die Rückgabe von Funktionen ins Leere laufen zu lassen, aber gibt es dafür einen vernünftigen Grund?

Gruß
K-H

omata 3. Jun 2011 11:17

AW: Daten in neues Formular übertragen?
 
Zitat:

Zitat von p80286 (Beitrag 1104388)
... gibt es dafür einen vernünftigen Grund?

Nein, gibt es nicht. Ich behalte meine Erkenntnis ab jetzt für mich.


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