Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.
Seite 1 von 2  1 2      

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