[Delphi] 2 forms in 1 app, geeft error

Pagina: 1
Acties:

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Ben net bezig met mijn eerste Delphi applicatie, en nu heb ik een form (MainForm: TMainForm), en ik wil daarbij zo maken, dat als je op een knop drukt dat dan een nieuw form opent (om nieuwe info in te geven enzo). Dat form heb ik gemaakt, zit ook 'verbonden' aan MainForm (unit wordt aangeroepen enzo), maar als ik op die knop druk, zegt ie 'A component named xxxx already exists'. Bij xxxx staat dan het eerst aangemaakte component op het nieuwe form. En wat voor naam ik de componenten ook geef, al zijn ze uniek in het hele programma, de error blijft.

Ik roep in MainForm op deze manier de nieuwe form (FormNewRecord: TFormNewRecord genaamd) aan :
code:
1
FormNewRecord.Create(MainForm);

Wat doe ik fout, wat moet ik doen om die error NIET te krijgen?

Mother, will they like this song?


Verwijderd

Geef 's de complete code die uitgevoerd moet worden, als je op die knop duwt.

Verwijderd

[onzin verwijdert]
Forms weergeven doe je zo volgens mij:
code:
1
frmFormNaam.Show;

of bijvoorbeeld
code:
1
frmFormNaam.ShowModal;

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Op zaterdag 23 maart 2002 21:06 schreef Xenith het volgende:
Volgens mij heb je voor elke form ook een unit nodig.(afgezien van de standaard error messages etc) Of heb je dit al?
Die unit is er, die wordt vanzelf aangemaakt bij het aanmaken van een nieuw form..

De code, even uit mijn hoofd mn laptop ligt beneden
code:
1
2
3
4
procedure Form1.Button1Click (Sender: TObject);
begin
  FormNewRecord.Create(MainForm);
end;

M'n eerste form heet MainForm, het form wat niet werkt heet FormNewRecord. Ik heb de nieuwe form via het menu 'File'>'New Form'

Mother, will they like this song?


Verwijderd

Ik heb zelf nog ff in delphi gekeken en wat in mijn vorige (gewijzigde) post staat klopt. Het is denk ik niet de bedoeling om Create te gebruiken om een andere form te laten zien.

Verwijderd

Eh, is FormNewRecord een type of een variabel.

Een type, prefix je [bijna] altijd met een T, dus jouw 2e window type zou TFormNewRecord moeten heten.

De code om zo'n form te laten zien moet dan zoiets zijn:
code:
1
2
3
4
5
6
with TFormNewRecord.Create(nil) do
try
  ShowModal;
finally
  Free;
end;

of met een variabele
code:
1
2
3
4
5
6
7
8
9
10
var
  MyForm: TFormNewRecord;
begin
  MyForm := TFormNewRecord.Create(nil);
  try
    MyForm.ShowModal;
  finally
    MyForm.Free;
  end;
end;

En zo zijn er nog veel meer en betere varianten, maar begin hier maar mee.
[edit]
Oh ja, als je een form zelf creeert, zoals je nu wil doen, moet je hem uit de auto-create list halen. Zit bij options ofzo :? [Ik haal gewoon die form variabele weg; werkt wat sneller :)]

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
De form heet FormNewRecord van het type TFormNewRecord (type door Delphi aangemaakt, TFormNewRecord=Class(TForm));

en FormNewRecord.Show werkt ! Geweldig ! Ik kan weer verder (en dat op zaterdagavond :Z)

maar toch bedankt ! :D

Mother, will they like this song?


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

waar dacht je dat Delphi forms standaard maakte??? -> in de project unit...

kijk daar eens in en zie hoe delphi dat doet, waarschijlijk maak je een bep. form 2x aan en dat vindt ie vast niet leuk...

Cogito Ergo Credo


  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Op zaterdag 23 maart 2002 21:20 schreef jopiek het volgende:
waar dacht je dat Delphi forms standaard maakte??? -> in de project unit...

kijk daar eens in en zie hoe delphi dat doet, waarschijlijk maak je een bep. form 2x aan en dat vindt ie vast niet leuk...
Dat was inderdaad het probleem. Ik deed .create, maar create was natuurlijk al gebeurd bij het opstarten van het programma... ik hoefde hem dus alleen nog maar de laten zien, .show dus.

Mother, will they like this song?


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

yep, of .ShowModal. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1