AGB  ·  Datenschutz  ·  Impressum  







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

Contructor des verbten Forms aufrufen

Ein Thema von Kostas · begonnen am 31. Jan 2013 · letzter Beitrag vom 31. Jan 2013
 
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#1

Contructor des verbten Forms aufrufen

  Alt 31. Jan 2013, 11:18
Delphi-Version: 5
Hallo Zusammen,

sorry für den schlechten Titel.

Ich habe eine MDI Anwendung. Bei diesem Projekt gibt es ein leeres TfrMaster Form aus diesem alle andere Form erben.
Damit jeder Form auch Parameter beim Create übergeben werden kann, habe ich den Constructor von TfrMaster überschrieben
und erweitert.
Constructor Create(AOwner: TComponent; aParams:TObject); overload; Zusätzlich habe ich eine allgemeingültige Methode erstellt die jede Form erzeugen kann.
{}function TfrMain.StartChildForm(FormClass: TFormClass; Berechtigt:TBerechtigung; Params:TObject=nil):TForm; Was mir jetzt nicht klar ist, wie erzeuge ich das Form mit dem neuen Constructor und wie muss der Construktor im abgeleiteten Form
aussehen damit er aufgerufen wird?


Das ist das MasterForm aus diesem alle Andere Form erben sollen.

Delphi-Quellcode:
unit Master;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TfrMaster = class(TForm)
  private
    { Private-Deklarationen }
    FParams:TObject;
  public
    { Public-Deklarationen }
    Constructor Create(AOwner: TComponent; aParams:TObject); overload;
  end;

var
  frMaster: TfrMaster;

implementation

{$R *.dfm}

{ TForm1 }

constructor TfrMaster.Create(AOwner: TComponent; aParams: TObject);
begin
  //Wird bei jeder erzeugten Form aufgerufen
  inherited create(AOwner);
  FParams := aParams;

end;


end.

Das ist eine abgeleitete Form. Der Constructor wird nicht aufgerufen um die Parameter konsumieren zu können
Delphi-Quellcode:
unit Adressen;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Master;

type
  TfrAdressen = class(TfrMaster)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    FParams:TObject;

    Constructor Create(AOwner: TComponent; aParams:TObject); overload;
  end;

var
  frAdressen: TfrAdressen;

implementation

{$R *.dfm}

constructor TfrAdressen.Create(AOwner: TComponent; aParams: TObject);
begin
  //Wird nicht aufgerufen!
  inherited create(AOwner);
  FParams := aParams;

end;


end.

Delphi-Quellcode:
{------------------------------------------------------------------------------------------------------------}
{}function TfrMain2.StartChildForm2(FormClass: TFormClass; Berechtigt:TBerechtigung; Params:TObject=nil):TForm;
{------------------------------------------------------------------------------------------------------------}

                    {-----------------------------------------}
                    {}procedure CreateAForm(var Result: TForm);
                    {-----------------------------------------}
                    begin
                      //Wie das ChildForm erzeugen?
                      result := FormClass.Create(Application); <<< so gehts, aber ohne Parameterübergabe
                      result := FormClass.Create(Application, Params); <<< so gehts nicht. Typcast?
                      with result as TfrMaster do
                      begin

                        AdvToolBar1.AddMDIChildMenu(result);
                        Inc(FChildCount);
                        result.OnClose := ChildFormClose;
                        AdvOfficeMDITabSet1.AddTab(result);
                      end;
                    end;{StartChildForm}

begin
  CheckBerechtigtBis(Berechtigt);
  result := nil;

  if (GetKeyState(VK_LCONTROL)<0)then
  begin
    CreateAForm(Result);
  end else
  begin
    result := BringChildFormToFront(copy(FormClass.ClassName,2,Length(FormClass.ClassName)),'');
    if (result = nil)then
    begin
      CreateAForm(Result);
    end;{if}
  end;{if}
end;


Herzlichen Dank für die Hilfestellung.
Gruß Kostas
  Mit Zitat antworten Zitat
 


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 13:20 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