Avatar billede tigertool Nybegynder
01. november 2004 - 14:03 Der er 7 kommentarer og
5 løsninger

Vis ny form

Hej,

Jeg sidder og laver lidt forms i Delphi (7). Jeg er pænt ny i Delphi.

Jeg har under File -> New -> Form lavet en ny TForm - men hvordan får jeg vist denne form fra min 'hovedform' ?

Jeg vil gerne have kodeeksempler, tak :)
Avatar billede pjotre Novice
01. november 2004 - 14:06 #1
FORMNAVN.Showmodal;
Avatar billede martinlind Nybegynder
01. november 2004 - 14:19 #2
HUSK LIGE AT FORMNAVN skal være Variabel navnet

Rigtigt : Form2.ShowModal;

Forkert : TForm2.ShowModal;
Avatar billede vallemanden Nybegynder
01. november 2004 - 14:40 #3
hvis du bruger showmodal, så kommer du ikke retur før du lukker form2
brug evt.

Form2.visible:=True;
Avatar billede martinlind Nybegynder
01. november 2004 - 14:53 #4
ShowModal = ikke retur før luk af form

Show ( Visible := TRUE ) = retur med det samme, begge forms kan modtage input fra bruger
Avatar billede tigertool Nybegynder
01. november 2004 - 18:36 #5
Jeg har altså lige findet ud af at man skal skrive Unitname under USES og så skal man så kalde det Unit1.Form1.Show; f.eks.

Er det ikke korrekt?
Avatar billede vallemanden Nybegynder
01. november 2004 - 21:36 #6
ikke helt

det er rigtigt at du skal have unit navn med under uses men du skal kun skrive
form1.visible:=True;
Avatar billede vallemanden Nybegynder
01. november 2004 - 21:38 #7
procedure TForm1.Button19Click(Sender: TObject);
begin
form12.visible:=True;
end;
Avatar billede tigertool Nybegynder
02. november 2004 - 10:44 #8
Jeg kan altså ikke få det til at virke på andre måder end den måde jeg har skrevet. Jeg kan ikke kalde noget direkre på form1 f.eks. Jeg skal have UnitName med først.
Avatar billede hrc Mester
02. november 2004 - 13:43 #9
Der er overordnet to måder at vise forme på i Delphi: Hvor formene automatisk er oprettede og dem hvor du opretter/viser/nedlægger dem. Den første er desværre default i Delhi.

En form kan så være modal eller modalless. Det betyder hhv. at den ligger ovenpå de andre forme i dit program. Den sidste, at du kan klikke (og få fokus) på andre forme i programmet.

Nu har vi altså 4 måder at vise en form på:
1. Delphi autoopretter Modal-form
2. Delphi autoopretter Modalless-form
3. Du opretter Modal-form
4. Du opretter Modalless-form

I det nedenstående forudsætter jeg en mainform som skal vise din nye form. Den nye form (her kaldet SubForm) er inkluderet i mainformen vha. Alt-F11 (når du står i mainformen).

Der er oprettet en knap som skal vise formen når man trykker på den.

ad 1.

procedure TMainForm.Button1Click(Sender : TObject);
begin
  if SubForm.ShowModal = mrOK then .. // hvis formen skal returnere et resultat
  begin
  end;

  // eller

  SubForm.ShowModal; // hvis intet returneres
end;

ad 2.

procedure TMainForm.Button1Click(Sender : TObject);
begin
  SubForm.Show; // Her er ikke meget andet man kan gøre.
end;

SubFormen kalder bare Close når den skal forsvinde igen.

ad. 3

procedure TMainForm.Button1Click(Sender : TObject);
begin
  SubForm := TSubForm.Create(self)
  try
    if SubForm.ShowModal = mrOK then .. // hvis formen skal returnere et resultat
    begin
    end;

    // eller

    SubForm.ShowModal; // hvis intet returneres

  finally
    SubForm.Free; // Alternativt brug: SubForm.Release;
  end;
end;

ad 4.

procedure TMainForm.Button1Click(Sender : TObject);
begin
  if not assigned(SubForm) then
    SubForm := TSubForm.Create(self)
  SubForm.Show;
end;

// I Subformens OnClose og OnDestroy event skrives

procedure TSubForm.FormClose(Sender : TObject; var Action: TCloseAction);
begin
  Action := caFree; // Sørger for at frigive når der lukkes
end;

procedure TLevAftaleForm.FormDestroy(Sender: TObject);
begin
  SubForm := nil; // Nulstiller den ”globale” variabel så assigned fungerer næste gang
end;
Avatar billede martinlind Nybegynder
02. november 2004 - 14:10 #10
Når vi nu er igang med Skole-delphi, så kan man også bruge FreeAndNil() den free'er dit object og sætter variablen til NIL i et hug.
Avatar billede martinlind Nybegynder
02. november 2004 - 14:10 #11
Det er jo imponenrende hvad man får for 15 point's :)
Avatar billede hrc Mester
02. november 2004 - 14:12 #12
Der er lang vej op til Borrisholt :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester