AGB  ·  Datenschutz  ·  Impressum  







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

Form dynamisch erzeugen

Ein Thema von whiteF · begonnen am 16. Okt 2016 · letzter Beitrag vom 24. Okt 2016
Antwort Antwort
Jim Carrey
(Gast)

n/a Beiträge
 
#1

AW: Form dynamisch erzeugen

  Alt 16. Okt 2016, 22:38
Da es das Formular ja bereits gibt, probier statt
Delphi-Quellcode:
FormMessengerNW_Instanz := FormMessengerNW.Create(Application.MainForm);
FormMessengerNW_Instanz.Show;
mal
Delphi-Quellcode:
Application.CreateForm(TFormMessengerNW, FormMessengerNW);
FormMessengerNW_Instanz.Show;

Geändert von Jim Carrey (16. Okt 2016 um 22:41 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Form dynamisch erzeugen

  Alt 16. Okt 2016, 23:00
Deine Klasse ist ja TFormMessengerNW

Also musst Du auch eine Instance davon erzeugen.

Dein Aufruf von:


 FormMessengerNW_Instanz := FormMessengerNW.Create(Application.MainForm); ruft auf der bestehenden Instance Create auf nicht den von der Klasse!!!
also ändere einfach zu:

 FormMessengerNW_Instanz := TFormMessengerNW.Create(Application.MainForm); Achte auf das "T" in TFormMessengerNW.Create

Meiner Meinung nach sollte das Aufrufen eines Constructors zumindest eine Hint liefern, aber man kann ja nicht alles haben
Fritz Westermann
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#3

AW: Form dynamisch erzeugen

  Alt 16. Okt 2016, 23:17
Warum aber eine neue Variable der Klasse anlegen, wenn er doch eh schon eine hat?
Dann wäre folgendes doch viel sinniger:

Application.CreateForm(TFormMessengerNW, FormMessengerNW);
  Mit Zitat antworten Zitat
whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#4

AW: Form dynamisch erzeugen

  Alt 17. Okt 2016, 07:35
oh nein,
ich habe tatsächlich nur das "T" vergessen... vielen Dank! 4 Augen sehen mehr als 2. Jetzt klappts ohne EAccess Violation.

Da hätte ich dann noch eine kleine Anschlussfrage:

Wie spreche ich diese dynamisch erzeugte Form dann am besten an?

ich beende über ein ImgClick diese Form, das hatte bei direkter Formnutzung ja so geklappt (FormMessengerNW.Close und bei dynamischer?
und bei dynForm?
(Sender as TForm).Close; //wobei Sender nicht immer TForm ist
ThisForm.Close; //


Ich steh da etwas auf dem Schlauch...
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Form dynamisch erzeugen

  Alt 17. Okt 2016, 08:27
Hi,

im Endeffekt genauso, wie du auf alle anderen Eigenschaften und Methoden zugreifen kannst, über die Instanz

Code:
FormMessengerNW.Close
bzw. über

Code:
FormMessengerNW.Hide
kannst du die Form wieder verschwinden lassen, ohne die Instanz zu löschen und beim nächsten
mal neu erzeugen zu müssen.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#6

AW: Form dynamisch erzeugen

  Alt 17. Okt 2016, 11:08
Zitat:
Da hätte ich dann noch eine kleine Anschlussfrage:

Wie spreche ich diese dynamisch erzeugte Form dann am besten an?
Guck dir mal meinen Lösungsvorschlag an. Dann kannst du das Formular ansprechen wie jedes andere Formular auch und du brauchst keine extra Variable, welche total sinnlos ist.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Form dynamisch erzeugen

  Alt 17. Okt 2016, 11:12
Zitat:
Da hätte ich dann noch eine kleine Anschlussfrage:

Wie spreche ich diese dynamisch erzeugte Form dann am besten an?
Guck dir mal meinen Lösungsvorschlag an. Dann kannst du das Formular ansprechen wie jedes andere Formular auch und du brauchst keine extra Variable, welche total sinnlos ist.
Kommt natürlich darauf an wieviele parallele Instanzen benötigt werden.
Philip
  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 00:44 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