Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Text von Form2 nach Form1 übergeben (https://www.delphipraxis.net/67982-text-von-form2-nach-form1-uebergeben.html)

Blumi 22. Apr 2006 20:05


Text von Form2 nach Form1 übergeben
 
Hi zusammen

Entweder spinnt mein Delphi oder ich mache einfach inen blöden Fehler den ich seit einer Stunde noch nicht gefunden habe.

Ich möchte einfach Einträge aus der Form2 in die ListView1 in Form1 eintragen.
Wenn ich folgenden Code von Form1 nach Form1 mache dann erscheint es auch in der ListView1, die sich in der Form1 befindent:

Delphi-Quellcode:
 With ListView1.Items.Add do
  begin
   Caption := Edit1.Text;  
   SubItems.Add(mtext);
   SubItems.Add(valort);
   SubItems.Add(ende);
   SubItems.Add(neuerstart);
   SubItems.Add(var5);
   SubItems.Add(team)
  end;
Jetzt hab ich versucht in Form2 diesen Code:

Delphi-Quellcode:
 With Form1.ListView1.Items.Add do
  begin
   Caption := Edit1.Text;  
   SubItems.Add(mtext);
   SubItems.Add(valort);
   SubItems.Add(ende);
   SubItems.Add(neuerstart);
   SubItems.Add(var5);
   SubItems.Add(team)
  end;
Aber wenn ich das mache passiert rein gar nichts.


So und deshalb hab ich in Form1 als Test eine Label1 gemacht. Und in Form2 folgendes geschrieben:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Label1.Caption := 'Hallo';
end;
Aber in Form1 steht immer noch Label1 ??

Könnt ihr mir da bitte weiterhelfen, ich weiss nicht mehr was ich ausprobieren könnte. :gruebel:

mkinzler 22. Apr 2006 20:09

Re: Text von Form2 nach Form1 übergeben
 
Ich würde mal versuchen ein Redraw von Form1 zu erzwingen:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
    Form1.Label1.Caption := 'Hallo';
    Form1.Update;
end;
Wenns funktioniert in der anderen Methode das selbe.

Blumi 22. Apr 2006 20:18

Re: Text von Form2 nach Form1 übergeben
 
Hi mkinzler

Vielen Dank für die schnelle Antwort, aber leider passiert damit auch nichts :cry:

mkinzler 22. Apr 2006 20:20

Re: Text von Form2 nach Form1 übergeben
 
Es kommt auch keine Fehlermeldung? Eigentlich sollte es so funktionieren.

Matze 22. Apr 2006 20:23

Re: Text von Form2 nach Form1 übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

Bei mir geht es auch ohne Probleme, das simple Beispiel hier mal im Anhang.

Blumi 22. Apr 2006 20:25

Re: Text von Form2 nach Form1 übergeben
 
Nein! Ich habe auch schon versucht den Computer neu zu starten.
Aber ich weiss jetzt auch nicht an wieso es nicht klappen könnte.

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Label1.Caption := 'Hallo';
Form1.Update;
Form2.Close;
end;
so steht es. Und es klappt nicht :(, naja danke muss ich eben wieder etwas anderes versuchen

Blumi 22. Apr 2006 20:30

Re: Text von Form2 nach Form1 übergeben
 
Zitat:

Zitat von Matze
Hi

Bei mir geht es auch ohne Probleme, das simple Beispiel hier mal im Anhang.

Hi Matze, wenn ich dein Projekt öffne, klappt es wie ichs mir vorgestellt habe, aber wenn ich den Code in mein jetziges Projekt einfügen geht gar nichts :?:

mkinzler 22. Apr 2006 20:30

Re: Text von Form2 nach Form1 übergeben
 
Versuch mal die Daten aus der Form2 zu holen, anstatt sie in Form1 zu schieben.

z.B.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
    if Form2.ShowModal then
    begin
        Label1.Caption := form2.Edi1.Text;
        Update;
    end;
end;

EDatabaseError 22. Apr 2006 20:31

Re: Text von Form2 nach Form1 übergeben
 
Da ich auch einmal solche Fehler hatte:

-Hast du in irgenteinem OnShow, OnHide, OnActivate ein ListBox Clear drin?


Mfg
Tobi

Blumi 22. Apr 2006 20:39

Re: Text von Form2 nach Form1 übergeben
 
Zitat:

Zitat von EDatabaseError
Da ich auch einmal solche Fehler hatte:

-Hast du in irgenteinem OnShow, OnHide, OnActivate ein ListBox Clear drin?


Mfg
Tobi

Nein habe ich nicht. Klappt es wenn ich es drin habe?

EDatabaseError 22. Apr 2006 20:41

Re: Text von Form2 nach Form1 übergeben
 
Zitat:

Zitat von Blumi
Zitat:

Zitat von EDatabaseError
Da ich auch einmal solche Fehler hatte:

-Hast du in irgenteinem OnShow, OnHide, OnActivate ein ListBox Clear drin?


Mfg
Tobi

Nein habe ich nicht. Klappt es wenn ich es drin habe?

Nein aber wenn du dein Form Aktivierst und im Activate ein Listbox Clear hast wird die Box geleert.

Blumi 22. Apr 2006 21:01

Re: Text von Form2 nach Form1 übergeben
 
Zitat:

Zitat von mkinzler
Versuch mal die Daten aus der Form2 zu holen, anstatt sie in Form1 zu schieben.

z.B.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
    if Form2.ShowModal then
    begin
        Label1.Caption := form2.Edi1.Text;
        Update;
    end;
end;

Mmh ich hab jetzt die Form2 nochmals neu geschrieben, aber immer noch keinen Fehler gefunden ?? Eigentlich habe ich keine Lust das ganze Projekt nochmals von vorne zu schreiben , nur weil ich es nicht schaffe eine Variable zu übergeben. :x

Der_Unwissende 22. Apr 2006 22:09

Re: Text von Form2 nach Form1 übergeben
 
Hi,
dass mit dem neu schreiben klingt vielleicht gar nicht so schlecht. Bitte versteh mich hier nicht falsch. Ich kenne deinen Code nicht, aber hier mal meine Vermutung, Form1 ist dein Hauptformular und öffnet irgendwann Form2? Wenn ja, dann hast du sicherlich eine dieser schönen, unter Delphi möglichen über-kreuz Einbidungen der Units?
So was sollte man wirklich immer vermeiden. Mir fällt kein einziger Grund ein, warum man so etwas überhaupt erlaubt (macht imho auch keine andere "große" Programmiersprache, aber das ist eh ein anderes Thema).

An sich verbaust du dir eine Menge Möglichkeiten, wenn du so etwas konstruierst. Solltest du später mal eins deiner Formulare verändern, kann das böse Auswirkungen haben. Du bist sehr stark an die beiden Formulare gebunden und kannst die halt so garnicht unabhängig benutzen. Muss einfach nicht sein.
Der eine Weg ist es, dass du einen Rückgabewert benutzt (wie ja schon geschrieben wurde), alternativ kannst du natürlich auch Form2 eine Variable (vom Typ TLabel) geben, die Form2 verändert (also nur den Wert der Caption!)

Gruß Der Unwissende

Sharky 23. Apr 2006 06:22

Re: Text von Form2 nach Form1 übergeben
 
Liste der Anhänge anzeigen (Anzahl: 2)
HAi Blumi,

ich würde die Daten nicht an eine Variable der Form1 übergeben sondern einen Datenrecord via SendMessage an die Form senden.
Dadurch bleibt die Verarbeitung der Daten dort wo sie sein soll, nämlich in Form1. Form2 sendet "nur" die Daten muss aber nicht wissen was mit ihnen passiert.

Wenn Du also die Daten nicht mehr in einem ListView anzeigen möchtest sondern etwas anderes damit machst musst Du nur noch den Code in Form1 (dem Empfänger der Nachricht) ändern.

Im Anhang mal zwei kleine Beispiele.

P.S.: Die Typedeklaration sollte dann am besten in eine eigene Unit ausgelagert werden um sie zentral pflegen zu können.


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