Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form dublizieren ? (https://www.delphipraxis.net/44002-form-dublizieren.html)

svenwel.de 11. Apr 2005 22:12


Form dublizieren ?
 
Guten Abend, gibt es ne möglichkeit eine Form zu dublizieren ?
Ich bekomm ständig nen Fehler beim dublizieren, dass schon eine komponente mit dem gleichen Namen exsistiert.

Delphi-Quellcode:
[....]
  with Form3.Create(self) do
  begin
   
    caption:='bla';

    show;
  end;
[....]
gibt es noch ne bessere möglichkeit, eine Form zu dublizieren ohne solch einen Fehler ?

mfg

malo 11. Apr 2005 22:13

Re: Form dublizieren ?
 
Versuch mal ein Array of TForm zu erstellen, das müsste gehen ;)

Robert_G 11. Apr 2005 22:23

Re: Form dublizieren ?
 
Zitat:

Zitat von malo
Versuch mal ein Array of TForm zu erstellen, das müsste gehen ;)

Hä? :shock:
Vielleicht kannst du das ja auchg mit 500 verschachtelten GoTos lösen. :lol:
Zitat:

Zitat von svenwel.de
Guten Abend, gibt es ne möglichkeit eine Form zu dublizieren ?
Ich bekomm ständig nen Fehler beim dublizieren, dass schon eine komponente mit dem gleichen Namen exsistiert.

Delphi-Quellcode:
[....]
  with Form3.Create(self) do
  begin
   
    caption:='bla';

    show;
  end;
[....]
gibt es noch ne bessere möglichkeit, eine Form zu dublizieren ohne solch einen Fehler ?

mfg

Dein Problem ist, dass du einen Constructor an einer Instanz ausführst.
Stelle ihn dir mehr wie eine class function vor, die dir eine neue Instanz liefert.
Schau dir mal das Beispiel an. ;)
Delphi-Quellcode:
with TDeineFormKlasse.Create(nil) do
try
  ShowModal();
  DoSomething();
finally
  Free();
end;

svenwel.de 11. Apr 2005 22:31

Re: Form dublizieren ?
 
:wiejetzt:
Also das hab ich jetzt nicht ganz verstanden :?:

Robert_G 11. Apr 2005 22:40

Re: Form dublizieren ?
 
Ups, .. naja...
Das sollte heißen, dass du einen Constructor nicht an deinem Form sondern an der Klasse des Foms anwenden musst. ;)

svenwel.de 11. Apr 2005 22:44

Re: Form dublizieren ?
 
ah ich verstehe ... denk ich mal

Also ich muss dann die objekte von der Form3 der neuen form "vererben" so in etwas

Delphi-Quellcode:
{ .... }
With TForm.Create({Form3.Objekte?}) do
begin
{....}
end;
:gruebel:

Robert_G 11. Apr 2005 22:48

Re: Form dublizieren ?
 
Deine Fensterklasse heißt wohl TForm3, oder? :zwinker:
Dann würde eine Instanz davon mit TForm3.Create(nil) angelegt werden.
So und und suchst du dir schnurstracks das nächste Anfängertutorial. ;)

malo 11. Apr 2005 23:02

Re: Form dublizieren ?
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von malo
Versuch mal ein Array of TForm zu erstellen, das müsste gehen ;)

Hä? :shock:

:oops: Hab wohl das Problem falsch gedeutet :mrgreen:

Hansa 11. Apr 2005 23:20

Re: Form dublizieren ?
 
Zitat:

Zitat von svenwel.de
ah ich verstehe ... denk ich mal

Hört sich aber nicht sehr überzeugend an. :shock:

Zitat:

Zitat von Robert_G
So und und suchst du dir schnurstracks das nächste Anfängertutorial.

Und Du am besten gleich mit. :mrgreen:

Er will doch wohl zuerst mal die Lösung des konkreten Problems. Das aktuelle hier ist aber in Delphi dermaßen einfach gelöst, daß es keine tiefgehenden theoretischen Kenntnisse erfordert. 8)

@Sven : ich gehe davon aus, daß die erste Form so ist, wie sie sein soll. Dann klicke sie mit der rechten Maustaste an und sage "zur Objektablage hinzufügen". Speichere sie aber vorher unter einem guten Namen ab. Tja, das wars. Alle Steuerelemente und dsefinierten Ereignisse der Form sind dann wiederverwertbar.

Die 2. Form kriegst du dann dadurch hin : Datei -> neu -> Weitere. Die 1. Form suchen und unten kopieren auswählen. Schon hast Du eine 2. Form, die heißt dann eben <TMeineForm1>. Und diese hat vorerst alle Eigenschaften der ersten !! Was danach damit der passsiert ist alleine deine Sache.

Da geht noch sehr viel mehr mit, aber das hat jetzt nicht viel Zweck, es zu erklären. 8)

svenwel.de 11. Apr 2005 23:26

Re: Form dublizieren ?
 
#Hanso

Hi Saarlänna ;)
Ehmm, die Form muss ja dynamisch dubliziert werden beim auslösen einer bestimmten prozedur. Das war das Problem was aber nun gelöst ist. Jetzt werd ich erstmal die WinApi durchklappern um rauszufinden, wie ich mit diesem dyn. erstellen form arbeiten kann, denn im source kann ich ja keine form ansprechen, die noch gar nicht exsistiert

grüße

Hansa 11. Apr 2005 23:31

Re: Form dublizieren ?
 
Ja sicher kannst du das. Ich behandele auf diese Weise 200 Forms. Erzeuge sie wenn sie gebraucht werden und fertig. Da Delphi die kopierten Forms automatisch benennt, kann da auch nichts passieren. Was die WinApi da jetzt soll ist mir allerdings ein Rätsel. :shock: Ich habe auch nicht gesagt, du solltest die Delphi-Hilfe nicht lesen ! :warn:

svenwel.de 11. Apr 2005 23:39

Re: Form dublizieren ?
 
naja ich such die erstellte form anhand der Caption bzw. hol mir nen handle à hwnd := findwindow(....)
und versuch dann irgendwie mit hilfe der api die komponenten auf der form zu lokalisieren um damit zu arbeiten, oder gibt es tatsächlich ne möglichkeit ne form anzusprechen, die noch gar nicht im code erzeugt ist ? würd mich ma interessieren, wie du das handhabst

grüße

Hansa 12. Apr 2005 01:48

Re: Form dublizieren ?
 
Zitat:

Zitat von svenwel.de
... würd mich ma interessieren, wie du das handhabst
grüße

Da gibts nicht viel zu handhaben. Wenn ich die Form brauche, dann erzeuge ich sie zur Laufzeit und habe alles da, was ich brauche. Und wenn ich sie nicht mehr brauche, dann rufe ich im FormClose
Delphi-Quellcode:
Action := caFree;
auf. Oder glaubst du ich würde jeden Buttton einzeln suchen ? :shock: Ich werde mich hüten, jetzt noch WinApi Funktionen einzubauen, wenn es irgendwie anders auch geht. 8)

shmia 12. Apr 2005 10:07

Re: Form dublizieren ?
 
Zitat:

Zitat von svenwel.de
Guten Abend, gibt es ne möglichkeit eine Form zu dublizieren ?

Du musst es so machen, wie in der Code-Library beschrieben:
http://www.delphipraxis.net/internal...ct.php?t=47443


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