![]() |
Re: Konzeptfrage FormCreate
Zitat:
Für Application.CreateForm ist nur die Objektvariable wichtig, da der Klassentyp gesondert übergeben wird. Also casten wir das Ganze zu TForm und es funktioniert. |
Re: Konzeptfrage FormCreate
Der "as" operator setzt einen Nachfolger von TObject voraus. nform ist jetzt aber eine untypisierte Refrenz, über die der Compiler keine weiteren Annahmen machen darf.
Du hast zwei Optionen: TForm(nform).Show ... benutzen - damit übernimmst du die Verantwortung das der cast OK ist. Oder den nform parameter typisieren:
Delphi-Quellcode:
verwenden. Dann klappt das ohne cast. Ich würde dann aber auch den ersten Parameter komplett entfernen, denn es wird ja nun immer eine TForm1 Instanz erstellt. Also:
function formerzeugen(fclass:TFormClass;var nform : Tform1):boolean;
Delphi-Quellcode:
PMM
function formerzeugen(var nform : Tform1):boolean;
|
Re: Konzeptfrage FormCreate
Vielen Dank für die Ausführungen. Das schafft mal wieder ein wenig mehr Klarheit!!
|
Re: Konzeptfrage FormCreate
Wie wäre es denn, wenn du ganz banal eine Funktion anstelle der Prozedur nehmen würdest:
Delphi-Quellcode:
HTH,
function CreateForm(AOwner: TFormClass): TForm;
begin Application.CreateForm(AOwner, Result); try Result.Parent := mainform.panel_df; mainform.Notebook1.Visible := false; Result.Show; except Result := nil; end; end; Uli. |
Re: Konzeptfrage FormCreate
Zitat:
Aber wenn in Result.Show eine Exception auftritt, setzt du Result einfach auf NIL? Ich weiß ja nicht.... |
Re: Konzeptfrage FormCreate
Da das Ergebnis der Funktion vom typ TForm ist sollte diese doch mit
Delphi-Quellcode:
aufgerufen werden,was jedoch in einer Fehlermeldung:
form2:=createform(TForm2);
[Fehler] Unit1.pas(31): Inkompatible Typen: 'TForm2' und 'TForm' endet. Oder habe ich hier nen Denkfehler? |
Re: Konzeptfrage FormCreate
Zitat:
|
Re: Konzeptfrage FormCreate
Zitat:
Delphi-Quellcode:
Form2 := TForm2(createform(TForm2));
|
Re: Konzeptfrage FormCreate
Irgendwie wird keine Form erzeugt, wenngleich die Funktion ordnungsgemäß durchläuft....
|
Re: Konzeptfrage FormCreate
Wie rufst du sie auf?
Delphi-Quellcode:
funktioniert bei mir ohne Probleme.
var
f : TForm; begin Application.CreateForm(TForm, f); f.Parent := Panel1; f.Visible := TRUE; f.Show; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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