Results 1 to 6 of 6

Thread: Loskoppelen van Form2 uit Form1

Hybrid View

  1. #1

    Loskoppelen van Form2 uit Form1

    Hallo allemaal,

    Ik zit met het volgende probleem:

    Ik heb een Form1/Unit1 en een Form2/Unit2. Form2 wordt vanuit Form1/Unit aangeroepen.

    Code:
    Procedure TForm1.Ga_naar_Form2(....
    Var
       Dlg : TForm2;
    Begin
       Dlg := TForm2.Create(self);
       Dlg.ShowModal;
       Dlg.Free;
    End;
    Wat ik nu wil is dat Form2/Unit2 een los programma wordt.

    Hoe kan je dat doen?

    Met een hartelijke groet, Frans

  2. #2
    Ik weet niet of ik je vraag helemaal goed begrijp, maar hier een poging tot een antwoord:

    Je kunt een nieuwe VCL applicatie maken en Form2 hieraan toevoegen. Vervolgens kun je in je projects options bij forms aangeven wat je MainForm is, hier zou je dan kunnen verwijzen naar Form2. Het form dat standaard aangemaakt wordt bij een nieuw VCL project kun je verwijderen. Of is dit niet wat je bedoeld?

  3. #3
    Oplossing

    Voorbeeld
    -----------
    Maak twee programma's; programma A en Programma B.
    In elk programma kan een tweede Form worden geopend.

    Programma A
    -----------
    unit Unit1;

    Uses Classes, ...,
    Unit2; // Deze toevoegen aan Unit1
    ...

    procedure TForm1.Button1Click(Sender : TObject) ;
    Var
    Dlg : TForm2;

    begin
    Dlg := TForm2.Create(self);
    Dlg.ShowModal;
    Dlg.Free;
    end;

    Programma B
    -----------
    unit Unit3;

    Uses Classes, ...,
    Unit4; // Deze toevoegen aan Unit3
    ...

    procedure TForm1.Button1Click(Sender : TObject) ;
    Var
    Dlg : TForm4;

    begin
    Dlg := TForm4.Create(self);
    Dlg.ShowModal;
    Dlg.Free;
    end;


    Nu wordt Unit4 gekoppeld aan Unit1 (programma A)
    ------------------------------------------------
    Open van Unit1 de Project Source, zie hier onder

    program project1 ;

    {$mode objfpc}{$H+}

    uses
    {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Interfaces, // this includes the LCL widgetset
    Forms, Unit1, Unit2 // Voeg Unit4 hier aan toe.
    { you can add units after this } ;

    {$R *.res}

    begin
    RequireDerivedFormResource := True ;
    Application.Scaled := True ;
    Application.Initialize ;
    Application.CreateForm(TForm1, Form1) ;
    Application.CreateForm(TForm2, Form2) ;
    Application.CreateForm(TForm4, Form4) ; // Voeg deze regel ook toe.
    Application.Run ;
    end.


    Programma A
    -----------
    unit Unit1;

    Uses Classes, ...,
    Unit2,Unit4; // Deze toevoegen aan Unit1
    ...

  4. #4
    Ik kan het allemaal even niet volgen (maar misschien ligt dat aan mij).

    Wil je nu twee aparte programma's of wil je gewoon één prigramma waar je willekeurig meerdere forms kunt openen waarmee je individueel kunt werken?

  5. #5
    Rik,

    Nee, ik kwam er achter dat het slimmer was om er een programma van te maken, n.l. Programma A met een uitbreiding van
    Form4/Unit4. Unit3 en de daar bij horende bestanden kunnen dan worden verwijderd.

    Eigenlijk is de tekst van het onderwerp niet juist. Een beter benaming van het onderwerp zou kunnen zijn:
    Verplaatsen van Form4 naar Form1.

  6. #6
    Dan zou je de regel Application.CreateForm(TForm4, Form4) juist weg moeten halen want anders wordt de Form4 ook al aangemaakt bij het starten van het programma (en je wil die pas op form1 openen).

    Het automatisch aanmaken van de forms bij starten wordt ook geregeld in project options onder forms. Zet alle forms die je zelf dynamisch aan wilt maken in available en niet bij start (of hoe die optie daar ook heet).

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •