Announcement

Collapse
No announcement yet.

Formularklasse (TFormClass) in Komponente speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formularklasse (TFormClass) in Komponente speichern

    In meiner Komponente will ich einen Fensterklasse vom Type TForm,
    TFormClass speichern. Ich speichere nicht nur den ClassNamen sondern das TFormClass.

    CoseAuszug:

    TLinkedForm = class(TCollectionItem)
    private
    FFormName : string;
    FClassName : string;
    FFormCaption : string;
    FFormClass : TFormClass;
    FForm : TForm;

    protected
    function GetDisplayName: string; override;

    public
    constructor Create(ACollection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    published
    property FormName : string read FFormName write FFormName;
    property FormClassName : string read FClassName write FClassName;
    property FormCaption : string read FFormCaption write FFormCaption;
    property Form : TForm read FForm write FForm;
    Property FromClass : TFormClass read FFormClass write FFormClass;
    end;

    Nun möchte ich Später auf das Formular wieder zugreifen, sprich es bei Bedarf erstellen usw.

    procedure TCiooFormManager.LoadForm(AFormName:string);
    var
    AForm : TForm;
    AFormClass : TFormClass;
    AFormIndex : Integer;
    begin

    Try
    AFormIndex := GetFormIndex(AFormName);
    if CheckFormular(Forms.Items[AFormIndex].FClassName) =-1 then
    begin
    AForm := Forms.Items[AFormIndex].FForm;
    AFormClass := TFormClass(FindClass(Forms.Items[AFormIndex].FClassName));
    if Assigned(AFormClass) then AForm:=AFormClass.Create(Self);
    AForm.Show;
    end;

    finally
    Screen.Cursor := ACursor;
    end;

    end;

    In der späteren Anwendung kann nur auf das Formular zugegriffen werden, wenn es entweder unter Projektobtionen in
    Automatisch erzeugen eingetragen ist oder aber es über RegisterClass registriet wird.

    Da ich ich aber die FormClass als TFormClass speichere müsste man doch so drauf zugreifen können oder wie kann man das Objekt der Klassen TForm (TFormClass) im in einer Komponente verarbeiten.

    Ich wollte eigentlich auf RegistClass verzichten

  • #2
    Hallo Klaus,
    du hast doch schon das Property FormClass.
    Wenn du noch eine Methode
    RegisterFormClass(AFormClass: TFormClass);
    implementierst und dann über den Aufruf
    RegisterFormClass(TFrmWasWeissIch);
    die Class speicherst, kannst du auch ohne Registerclass das Formular erzeugen.
    Gruß, Fran

    Comment


    • #3
      Hallo Frank, ich danke Dir für die schnell Antwort wie implementiere ich eine Methode RegisterFormClass, haste dafür eventuell ein Beispiel?

      Gruß Klau

      Comment


      • #4
        Vielleicht noch mal eine ergänzung, ich habe eigentlich zwei Komponenten, eine die auf den Hauptformular liegt und in einer TCollection alle Informationen der Formulare einer Anwendung speichert und eine Komponente,die auf jemdem Formular liegt.
        Über den Objektinspektor wähle ich die Hauptkomponente aus und weise der Formularkomponente die sogenannte "Trägerkomponente zu" meine Vorstellung war eigentlich, dass in dem Moment wo ich die Trägerkomponente zuweise auch das Formular registriert wird. Später möchte ich nur noch mit der Hauptkomponente arbeiten

        Comment

        Working...
        X