![]() |
MDI-Child per Function erzeugen
Hallo,
ich bin gerade bei einem ziehmlich mächtigen MDI-Project dran. Hierbei muss ich ziehmlich viele MDI-Childs zur laufzeit erzeugen. Also würde ich Functionen schreiben die so aussehen:
Delphi-Quellcode:
Das geht. Ich bin aber faul und möchte dies Schritte in einer Function machen lassen.
function TclsExecuteFunction.KundeOeffnen(const intFmID:integer):boolean;
var fmKunde :TfmKunde; begin result := false; fmKunde := TfmKunde.Create(Application.MainForm); try fmKunde.WindowState := self.WindowState; fmKunde.Tag := intFmID; fmKunde.Show; result := true; except fmKunde := nil; fmKunde.Free; end; end; wie z. B.:
Delphi-Quellcode:
Vorteil ist, das ich falls es globale Änderungen ergeben nur diese Function anpassen brauch. Des Weiteren ist diese Function was für die Schreibfleissigen Programmierer und ich möchte auch dazu gehören.
function TclsExecuteFunction.OpenForm(Form:TForm; clsForm:TForm; intFmID:integer): boolean;
begin result := false; Form := (clsForm as TForm).Create(Application.MainForm); try Form.Tag := intFmID; result := true; except Form := nil; Form.Free; end; end; function TclsExecuteFunction.KundeOeffnen(const intFmID:integer):boolean; var fmKunde :TfmKunde; begin self.OpenForm(fmKunde, (TfmKunde as TForm), intFmID); end; Ich hoffe, ihr habe eine Idee. Gruss Samson |
Re: MDI-Child per Function erzeugen
erstmal würde ich die Objekte Kapseln und nicht irgentwelche Variablen der MDIs vonaussen modifizieren. Dat is unfein.
Delphi-Quellcode:
function TclsExecuteFunction.KundeOeffnen(const intFmID:integer):boolean;
var fmKunde :TfmKunde; begin fmKunde:=nil; fmKunde:= TfmKunde.create(Self,intFmID); result:= assigned(fmKunde); end; Da TfMKunde ein MDI ist, brauchst du kein Show. Self ist dasselbe wie Application.MainForm.
Delphi-Quellcode:
grez
FmKunde = TFMKunde()
private FMID:Integer; public constructor Create(AOwner:TComponent;AFmID:Integer), end; constructor... begin inherited Create(AOwner); FMID:= aFmID; end; msch |
Re: MDI-Child per Function erzeugen
Hallo MSCH,
ich danke für Deine Antwort. Jedoch haben wir uns ein wenig Missverstanden. Das Formular: TfmKunde ist ein MDI-Child und wird durch die Klasse: TclsExecuteFunction erzeugt. TclsExecuteFunction ist eine Klasse zum Hauptformular (MDI) TfmMain. Ich möchte alle Erzeugungen in der Klasse vornehmen. Das MDI-Child: TfmKunde, TfmLieferanten, TfmWarengruppen .... Dazu möchte ich eine Allgemeine Routine schreiben, welche Standardvorgaben und das erzeugen derjenigen vornimmt. Vorgehen in der Klasse ist folgender. - Ich gehe in einer Function, die besagt, welches Formular erzeugt werden soll. Die ID des Formulars ist als Constante festgelegt und wird aus dem Hauptformular übergeben. - Es wird eine Open-Function ausgeführt (OpenKunde, OpenLieferant...), die das ganze Erzeugt und anzeigt. Mein Ziel ist, eine Function zu schreiben die ... a) eine Formularvariable übergeben bekommt. b) den Klassentyp übergeben bekommt. c) die Formular-ID übergeben bekommt. damit ich den ganz Quatsch mit Form := ClassenTyp.Create(Application.MainForm); nicht nochmal neu schreiben muss. Was ich nicht schaffe ist den Klassentyp zu übergeben (TfmKunde, TfmLieferanten, TfmWarengruppen ...). Hier stehe ich gerade. Gruss Samson |
Re: MDI-Child per Function erzeugen
Delphi-Quellcode:
function TclsExecuteFunction.OpenForm(clsForm :TFormClass): TForm;
begin Result := nil; try Result := clsForm.Create(Application.MainForm); ... except FreeAndNil(Result); end; end; |
Re: MDI-Child per Function erzeugen
Super hat geklappt.
Ich danke vielmals für die Hilfe. :bounce2: :bounce1: :bounce2: :dancer: :dancer2: :dancer: Gruss Samson |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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