![]() |
Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Hallo zusammen,
ich habe eine Frage, weil ich mir nicht sicher bin, wie ich das am besten anstelle. Ich erzeuge ein Formular zur Laufzeit, welches Modal aufgerufen werden muss. Dieses Formular hat Labels, ein Edit und mehrere Buttons. Ich mache das ganze mit einer lokalen Variable (das Formular) und rufe es modal in einer Prozedur auf. In dieser Prozedure erzeuge ich alle Komponenten, die auf dem Formular sein sollen. Bis hier hin geht alles, kein Problem. Ich möchte, dass beim Button Klick, das Edit des modalen Fensters beschrieben wird mit einem bestimmten Wert (Inhalt spielt keine Rolle). Es geht mir darum, dass ich das Event zum Button verknüpfen muss und dann den Wert "x" auf das Edit schreibe. Wie greife ich in dem OnClick Ereignis auf das Edit zu, welches dynamisch in der einen Prozedur erzeugt wurde? Habt ihr eine Idee, wie ich das in meiner Prozedur umsetzen kann? Ich hoffe, ihr wisst wie ich das meine... |
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Schätze mal das du mit einer Schleife durch alle self.Components gehen musst und die Komponente über den Namen finden. Dann mit TEdit(Components[I]).Text:='Hallo'; etwas rein schreiben.
|
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Du kannst Referenzen auf die erzeugten Controls in Formularfeldern speichern und dann ganz normal über diese Felder darauf zugreifen.
Delphi-Quellcode:
type
TMyForm = class(TForm) private FEdit1: TEdit; FButton1: TButton; procedure HandleButton1Click(_Sender: TObject); public constructor Create(_Owner: TComponent); override; end; constructor TMyForm.Create(_Owner: TComponent); begin inherited; FEdit1 := TEdit.Create(Self); FEdit1.Parent := self; // Position etc. setzen FButton1 := TButton.Create(Self); FButton1.Parent := self; // Position etc. setzen FButton1.OnClick := HandleButton1Click; end; procedure TMyForm.HandleButton1Click(_Sender: TObject); begin FEdit1.Text := 'bla'; end; |
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Sehe den Sinn nicht so ganz das Formular komplett aus Code aufzubauen. Man kann es doch auch wie jedes andere Formular anlegen und dann in "Verfügbare Formulare" setzen, dann wird es bei Programmstart nicht automatisch erzeugt.
Dann bleiben nur noch wenige Zeilen zum Erzeugen Anzeigen Löschen. |
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Zitat:
|
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Es ist wie Uwe sagt, dynamisch. Von daher ist die Größe vorher nicht bekannt.
Ich erzeuge das Formular direkt als TForm, ich muss mir dann erst eine eigene Klasse machen, damit ich die Events da drinne deklarieren und auch direkt auf die Edits zugreifen kann. Die Edits werden ja in der einen prozedur auch dynamisch erzeugt und sind immer nur eine lokale Variable. Daher kann ich die in den Events nicht ansprechen, da brauche ich etwas globales (also eigene Klasse). Danke aber :thumb: |
AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Alternativ kannst du auch über FindComponent an die Controls rankommen, vorausgesetzt sie wurden mit dem Form als Owner erzeugt.
Etwas komfortabler geht es mit einem TComponent Helper wie ![]()
Delphi-Quellcode:
type
TComponentHelper = class helper for TComponent public function FindComponentOf<T: TComponent>(const AName: string): T; inline; end; ... function TComponentHelper.FindComponentOf<T>(const AName: string): T; begin result := FindComponent(AName) as T; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 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