AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit 3 Formularen

Ein Thema von Lolzor · begonnen am 2. Jun 2008 · letzter Beitrag vom 4. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#1

Problem mit 3 Formularen

  Alt 2. Jun 2008, 20:11
Ich hab erst vor kurzem angefangen mit Delphi 2005 zu programmieren und hoffe es bald zu beherschen

Jetzt habe ich aber ein Problem die Lage ist wie folgt:

Ich habe 3 Formulare in einem Projekt(VCL-Formularanwendung)

Formular 1 und 2 sollen per klick auf einen Button jeweils 1 Label.Caption (also Label1 und Label2)auf dem Formular3 verändern
Auf Formular 1 und 2 ist dabei jeweils ein Button.
Dann soll das 3. Formular mit den veränderten Captions angezeigt werden

Es funktioniert wenn ich nur 2 Formulare habe aber bei zahlen darüber funktioniert es nicht mehr

Ich hoffe meine Beschreibung reicht aus und ihr könnt mir helfen

Danke schonmal im voraus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit 3 Formularen

  Alt 2. Jun 2008, 20:23
Wie sieht der Code mit 2 Formularen aus?
Markus Kinzler
  Mit Zitat antworten Zitat
blackdead

Registriert seit: 7. Okt 2007
1 Beiträge
 
#3

Re: Problem mit 3 Formularen

  Alt 2. Jun 2008, 21:08
Also ein bischen Code wäre schonmal nicht schlecht...
Sonst guck docherstmal ob du auch in den beiden Formen(Form1, Form2) die Unit von Form3 implementiert hast und vergewissere dich das du auch den Formnamen vor das label sezt, welches du verändern möchtest.

Hier ein kleines Beispiel, funktioniert so wunderbar:

Form1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
uses Unit3;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form3.Label1.Caption := 'WAS AUCH IMMER';
end;

end.
Form2:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation
uses Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form3.Label2.Caption := 'NOCH EIN LABEL TEXT';
end;

end.
Form3:
Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

end.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit 3 Formularen

  Alt 2. Jun 2008, 21:21
@blackdead: ok, es ist dein erster Beitrag.

Trotzdem, nur weil es funktioniert ist es nicht sinnvoll so zu programmieren wie du das in deinem Beispiel zeigst!

Man sollte niemals von einer Unit aus auf Komponenten in einer anderen Unit direkt zugreifen. Dies geschieht immer über Zugriffsmethoden.
Warum? Ganz einfach stell dir vor du änderst eine Komponente auf einer Form. Dann würdest du in allen möglichen Units Fehlermeldungen erhalten und müsstest also überall in deinem Projekt herumändern.
Wenn du alles über Zugriffsmethoden realisierst, knallt es nur in der Unit, in der du auch gerade die Komponente verändert hast.

Das nur mal in aller Kürze...

Gruss
Thorsten
  Mit Zitat antworten Zitat
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#5

Re: Problem mit 3 Formularen

  Alt 3. Jun 2008, 13:43
Erstmal danke für die schnellen antworten
@mkinzler so sieht das bei mir mit 2 Formularen aus

Formular 1
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}
var
T: TForm2;

procedure TForm41.Button1Click(Sender: TObject);
begin
T := TForm2.Create(self);
T.Label1.Caption := 'Text';
T.ShowModal;
T.Free;

end;

end.
Formular 2
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label1: TLabel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.


@blackdead Ok Ich habe jetzt noch das problem das wenn ich Label2 geändert habe auch Form3 angezeigt haben will das würde ich dann so machen

Delphi-Quellcode:
var
s: TForm3;

procedure TForm38.Button1Click(Sender: TObject);
begin
Form3.Label2.Caption := 'Hans2';
s := TForm39.Create(self);
s.ShowModal;
s.Free;

end;
aber durch "Create" wird ja was erstellt und so habe ich dann ja nicht die veränderten Labels sondern die unveränderten

@omata ich werde mich dann mal mit Zugriffsmethoden beschäftigen
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Problem mit 3 Formularen

  Alt 3. Jun 2008, 14:03
Delphi-Quellcode:
Form3.Label2.Caption := 'Hans2';
s := TForm39.Create(self);
s.ShowModal;
s.Free;
Du greifst hier auf ein Label eines bereits instanzierten Formulars zu, instanzierst danach aber ein Neues und läss dies dann anzeigen.
  Mit Zitat antworten Zitat
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#7

Re: Problem mit 3 Formularen

  Alt 3. Jun 2008, 15:38
Und wie lasse ich mir das instanzierte Formular anzeigen?
Wenn ich einfach den Teil mit Create weglasse gibts ne fehlermeldung
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Problem mit 3 Formularen

  Alt 3. Jun 2008, 23:09
Du brauchst keine Variable für das Form zu erstellen.
Wenn du sonst nichts geändert hast, dann werden die zur Laufzeit erstellt.

Delphi-Quellcode:
Form3.Label2.Caption := 'Hans2';
//Form3.ShowModal; // ist nur wichtig, wenn du bei Buttons die Eigenschaft ModalResult festlegst. Da bekommst du dan den wert von ModalResult zurück :zwinker:
Form3.Show;
Ein Formular zur Laufzeit ist was ganz anderes und ist auch viel zukompliziert für dich

Der Text kannst du bei beiden Buttons verwenden. Natürlich umschreiben
Nickel
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#9

Re: Problem mit 3 Formularen

  Alt 4. Jun 2008, 08:42
[quote="NickelM"]

Ein Formular zur Kaufzeit ist was ganz anderes und ist auch viel zukompliziert für dich

quote]

Ja, das würde ich auch sagen. Mir ist es ebenfalls noch nie gelungen ein Formular zur Kaufzeit zu erstellen.

Aber mal davon abgesehen, würde ich schon empfehlen, sich damit zu befassen, wie Forms erstellt und zerstört werden. Einfach, um diese Problematik von allem "Mysteriösen" zu befreien. Dann hätte Lolzor künftig sehr viel weniger Probleme mit mehr als 2 Forms.
Lolzor: Schau am Besten mal in die DPR-Datei deines Projektes, dort siehst du zumindest mal, wie dein Form1, Form2 usw. zur "Kaufzeit" entsteht.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Problem mit 3 Formularen

  Alt 4. Jun 2008, 08:48
LOL Sorry ein kleiner aber lustiger Schreibfehler ändere ich gleich
Nickel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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