Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Daten an zu Laufzeit erzeugte Form übergeben. (https://www.delphipraxis.net/187917-daten-zu-laufzeit-erzeugte-form-uebergeben.html)

codenoob 14. Jan 2016 17:56

Daten an zu Laufzeit erzeugte Form übergeben.
 
Hi Delphianers

Ich erzeuge zur Laufzeit meises Programmes mehrere Form's in der es eine Textbox hat mit folgendem Code.
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  MyForm: TForm2;
begin
  MyForm := TForm2.Create(nil);
  MyForm.Show;
  MyForm.Caption := inttostr(MyForm.Handle);
end;
Nun möchte ich irgendwas in eine Textbox schreiben von einer dieser erzeugten Form's.
Wie muss ich da vorgenhen. Ich hab gesehen das Jede Form ja ne eigene Handle hat muss ich irgendwas damit machen?


Grüsse Tom

Sir Rufo 14. Jan 2016 18:06

AW: Daten an zu Laufzeit erzeugte Form übergeben.
 
Delphi-Quellcode:
MyForm.Edit1.Text := 'Moin';

codenoob 14. Jan 2016 18:18

AW: Daten an zu Laufzeit erzeugte Form übergeben.
 
mit BTNCLick erzeuche ich ja immer eine form und wenn ich den jetzt 5x gedrückt habe dann habe ich ja 5 Form's
und ich möchte ja dann in die EditBox von einer beliebigen Form der 5 Form's was schreiben.

ich dachte mir man könne das irgendwie so...
Delphi-Quellcode:

Myform(das Handle der Form).editbox.text
lösen.

haentschman 14. Jan 2016 18:36

AW: Daten an zu Laufzeit erzeugte Form übergeben.
 
Moin...:P

Du merkst dir die erzeugten Forminstanzen in einer generischen Objektliste z.B. Dann kannst du auf jede Form zugreifen und Werte in die Controls schreiben.
Besser wäre aber du übergibst die Werte an Properties der Form und die Form entscheidet selbst was sie mit den Daten anfängt. :thumb: Ein Beispiel wäre dafür 2 Formen die die gleichen Properties haben, aber völlig unterschiedlich diese Daten darstellen. Deiner Funktion, die die Daten übergibt, ist es völlig wurscht wie die Daten dargestellt werden und muß die Controls nicht kennen. 8-)

codenoob 15. Jan 2016 11:18

AW: Daten an zu Laufzeit erzeugte Form übergeben.
 
Hab das nun so gelöst :)
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls, Unit2;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ListView1: TListView;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  MyForm: TForm2;

implementation

{$R *.dfm}

function FindForm(H: THandle): TForm;
var
  i: integer;
begin
  Result := nil;
  for i := 0 to Screen.FormCount -1 do begin
    if Screen.Forms[i].Handle = H then Result := Screen.Forms[i];
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 Li: TListItem;
begin
MyForm := TForm2.Create(nil);
MyForm.Caption := inttostr(MyForm.Handle);

Li := Form1.ListView1.Items.Add;
Li.Caption := inttostr(MyForm.Handle);

MyForm.Show;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
myform := TForm2(FindForm(strtoint(listview1.Selected.Caption)));
myform.Label1.Caption := 'Hallo Welt';
end;

end.

Mavarik 15. Jan 2016 12:16

AW: Daten an zu Laufzeit erzeugte Form übergeben.
 
Wieder ein Chat?

Delphi-Quellcode:
For i:=0 to 10 do
  begin
    MyForms[i] := TMyForm.Create(Application);
    MyForms[i].Show;
  end;
dann schreiben

Delphi-Quellcode:
For i:=0 to 10 do
  MyForms[i].TextAnzeige := 'Hallo Zusammen';
Fertig! So?

Mavarik


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