![]() |
Komponenten in dynamisch erstelltem Formular ansprechen
Ichhabe folgendes Formular:
Delphi-Quellcode:
Das wird jetzt dynamsich erstellt:
unit frmContact;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TDetails = class(TForm) edtStrasse: TLabeledEdit; edtPLZ: TLabeledEdit; edtOrt: TLabeledEdit; private { Private declarations } public { Public declarations } end; var Details: TDetails; implementation {$R *.dfm} end.
Delphi-Quellcode:
So, und jetzt stehe ich auf dem Schlauch. Warum kennt er das Edit aus dem Formular nicht? Oder anders gefragt, wie kann ich die Komponenten auf dem Formular ansprechen?
frmDetails := TDetails.Create(nil);
with frmDetails do begin Caption := Format('%s %s', [Nachname, Vorname]); edtStrasse.Text := 'Foobar'; // Fehler edtStrasse unbekannt ShowModal; Release; end; Wenn wir das schon hatte, dann habe ich es nicht gefunden. :( |
Re: Komponenten in dynamisch erstelltem Formular ansprechen
Wieso denn frmDetails und nicht Details? Wobei ich jetzt nicht sicher bin, ob das eine Rolle spielt. Ansonsten lass das with mal weg und mach es "richtig".
|
Re: Komponenten in dynamisch erstelltem Formular ansprechen
Wo steht denn der 2. Quelltext? in der selben Unit? Würde als erstes versuchen edtStrasse public zu setzen...
Gruß BBB |
Re: Komponenten in dynamisch erstelltem Formular ansprechen
Hallo Michael,
das muß so eigentlich funktionieren ! Hast Du frmDetails deklariert vom Typ TDetails oder vom Typ TForm ? Gruß blauweiss |
Re: Komponenten in dynamisch erstelltem Formular ansprechen
Das macht keinen Unterschied:
Delphi-Quellcode:
Details := TDetails.Create(nil);
Details.Caption := Format('%s %s', [Nachname, Vorname]); Details.edtStrasse.Text := 'Foobar'; Details.ShowModal; Details.Release;
Code:
Er bietet es mir auch gar nicht in der Codevervollständigung an. Aber sie müssten doch eigentlich sichtbar sein oder?
[Pascal Error] Main.pas(135): E2003 Undeclared identifier: 'edtStrasse'
@BomberBB: Natürlich sind es zwei Units. Das eine ist der Code von der Form und das andere ist der Code, der diese Form erzeuge soll. Dabei sollen Daten an die Komponenten der Form übergeben werden. @blauweiss: Das ist vom Typ TForm. Aber jetzt, wo du es sagst, es muss vom Typ TDetail sein. :wall: OK, gelöst. |
Re: Komponenten in dynamisch erstelltem Formular ansprechen
Jaja, das sind die groben Feinheiten, passiert mir auch gelegentlich :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz