AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Formular zur Laufzeit mit Edit, Labels und Buttons + Events
Thema durchsuchen
Ansicht
Themen-Optionen

Formular zur Laufzeit mit Edit, Labels und Buttons + Events

Ein Thema von Alex_ITA01 · begonnen am 2. Sep 2022 · letzter Beitrag vom 2. Sep 2022
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 11:14
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...
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 11:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 11:50
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;
Thomas Mueller
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 12:00
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.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 12:05
Sehe den Sinn nicht so ganz das Formular komplett aus Code aufzubauen.
Das kann schon sinnvoll sein, wenn man die Controls dynamisch erzeugen will. Z.B. eine variable Anzahl von Label-Edit-CheckBox Kombinationen, wo die tatsächliche Anzahl erst zur Laufzeit bekannt ist. Allerdings kann das gerade bei High-DPI Anwendungen schon etwas komplexer werden, das alles sauber zu positionieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#6

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 12:38
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: Formular zur Laufzeit mit Edit, Labels und Buttons + Events

  Alt 2. Sep 2022, 12:43
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 hier gezeigt:
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 12: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