AGB  ·  Datenschutz  ·  Impressum  







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

Erzeugte Form

Ein Thema von smart · begonnen am 31. Dez 2004 · letzter Beitrag vom 1. Jan 2005
Antwort Antwort
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

Erzeugte Form

  Alt 31. Dez 2004, 16:04
Ich habe eine Form = fsNormal (Haupt Form). Auf dieser Form ist ein Button. Wenn ich den Button klicke, wird eine mit Application.CreateForm(TForm2, Form2); eine zweite Form aufgerufen. Wenn ich nochmals auf den Button klicke eine Weitere usw. aufgerufen. Auf den aufgerufenen Formen ist ein TEdit. Das klappt auch alles ganz gut nur wir komme ich an TEdit von den aufgerufenen Formen heran? Mit Form2.Edit.Text komme ich nur an der ersten Form herann. Hat Einer von Euch einen Vorschlag?
Heike Kretschmann
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Erzeugte Form

  Alt 31. Dez 2004, 16:08
Zitat:
Auf den aufgerufenen Formen ist ein TEdit.
wenn du diese edits auch dynamisch instanziierst und das parent auf das entsprechende form setzt, MUSS es gehen
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Erzeugte Form

  Alt 31. Dez 2004, 16:11
Hi,

wie sieht denn dein Code aus???
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Erzeugte Form

  Alt 31. Dez 2004, 16:38
Hier ist mein Code:

Code:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Code:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
    Application.CreateForm(TForm2, Form2);
end;

end.
Code:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.FormCreate(Sender: TObject);
begin

end;

procedure TForm2.Edit1Change(Sender: TObject);
begin

end;

end.
Matürlich könnte ich auf der Form2 das TEdit dynamisch erzeugen, aber auf dieser Form sollen noch weiter Elemente platziert werden, so dass es zu umständlich wäre alle Elemente dyn. zu erzeugen.
Heike Kretschmann
  Mit Zitat antworten Zitat
31. Dez 2004, 20:23
Dieses Thema wurde von "Christian Seehase" von "Windows API" nach "VCL-Komponenten und Controls" verschoben.
Kein Windows API Problem
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Erzeugte Form

  Alt 31. Dez 2004, 23:07
du musst die instanzen von TForm2 dir irgendwo absichern bevor du die nächste erzeugst sonst ist klar das du nicht mehr über form2 ran kommst da du die variable form2 mit einer neuen Instanz von TForm2 überschreibst.

Erstelle die neuen Instanzen am besten so
  form2 := TForm2.Create(Application); anschließend kannst du über form2.Edit1 auf das edit der zuletzt erzeugten Instanz zugreifen.
Wenn du auf alle instanzen zugreifen willst nimm einfach eine TList dafür
Delphi-Quellcode:
form2Liste: TList;
[...]
form2Liste := TList.Create;
[...]
  form2Liste.Add(TForm2.Create(Application));
damit wird jedes mal wenn eine Instanz erstellt wird diese in die Liste gepackt.
später kannst du dann mit
TForm2(form2Liste.Items[Index]).Edit1 auf die Edits der verschiedenen Instanzen zugreifen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Erzeugte Form

  Alt 1. Jan 2005, 10:35
Frohes neues Jahr!

Vielen Dank für Deine Antwort!
Ich habe es getestet, aber wenn ich so abfrage
Code:
TForm2(Form2.Liste.Items[Index]).Edit1.Text := 'Test';
kann ich wieder nur auf die zuletzt erzeugte Form zurÜckgreifen. Nicht auf alle Formen. Ich bin aber noch Delphi- Anfänger und bitte um Entschuldigung wenn ich etwas nicht sofort verstehen!

Und wenn ich so Abfrage
Code:
TForm2(Form2.Liste.Items[0]).Edit1.Text := 'Test'; // für die erste Form
TForm2(Form2.Liste.Items[1]).Edit1.Text := 'Test'; // für die zeite Form
Dann bekomme ich die Fehlermeldung: Liste überschreitet das Maximum (1).
Heike Kretschmann
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Erzeugte Form

  Alt 1. Jan 2005, 12:13
Ich habe es doch hinbekommen. Hatte sich ein Schreibfehler eingeschlichen! Aber wenn ich die Formen so öffne, kann ich zwar auf alle Formen zugreifen, aber wenn ich die Formen schliesse und dann wieder aufrufe stürzt Delphi ab.
Heike Kretschmann
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Erzeugte Form

  Alt 1. Jan 2005, 12:57
dann einfach im onClose/onDestroy der Form aus der Liste austragen
 Form2Liste.Delete(Form2Liste.IndexOf(Self));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Erzeugte Form

  Alt 1. Jan 2005, 15:17
Ja, vielen Dank für die Antwort, Daruf bin ich auch schon gekommen. Ich komme jetzt Dank Deine Hilfe klar und habe wieder etwas dazu gelernt. Nochmals Danke!
Heike Kretschmann
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:43 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