Toon posts:

[delphi] na open form, form sluiten

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb ff een vraag,

ben bezig in Delphi, nou heb ik een wizard na gebouwd, en hij doet het aardig. Maar nu is mijn punt, ik wil na scherm 1 -> scherm 2 openen, de bedoeling is wel dat scherm 1 afsluit en dan pas 2 opent. Het zal ongetwijfeld makkelijk zijn maar het lukt me niet.
dit heb ik al geprobeerd:
code:
1
2
3
4
5
6
7
8
procedure Tfrmwizard.btnnextClick(Sender: TObject);
var
 theForm : tfrmwizard2;
begin
 theForm := Tfrmwizard2.Create(Self);
 theForm.Show;
 close;
end;


het probleem is alleen dat hij dan form 2 niet opent. maar alleen form1 afsluit. Alleen close er neer zetten heeft ook geen zin.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Form1 is je startup-form en dus eigenlijk ook het begin punt van je applicatie.
Als je form1 sluit, dan wordt je applicatie ook afgesloten.

Je kan ervoor kiezen om form1 te hiden, maar dat is eigenlijk niet de mooiste oplossing.

https://fgheysels.github.io/


  • mjax
  • Registratie: September 2000
  • Laatst online: 14-05 11:00
Komt door Self in de Create. Gebruik maar eens Create(nil). Dan werkt het wel.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
mjax schreef op 03 december 2003 @ 13:41:
Komt door Self in de Create. Gebruik maar eens Create(nil). Dan werkt het wel.
Da's idd ook waar. De owner van Form2 is Form1, en bij het sluiten van de owner, gaan alle owned forms ook gesloten worden.

https://fgheysels.github.io/


Verwijderd

Topicstarter
hey ja idd... nil werkt idd...pff was idd dus weer simpel...heb ik elke keer..


En wat betreft form1 dat is idd zo..ik had ff 2 dingen door elkaar gehaald..maar dan probleem heb ik ook nog..
form1 moet wel afgesloten worden, want als je voor hide kiest dan kan ik de applicatie niet meer stop zetten :D is er nog een andere oplossing?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Nee, de structuur die jij bedacht hebt is gewoonweg niet echt werkbaar. Je zou nog in de OnClose van al je forms bepaal je of je Application.Terminate of MainForm.Close doet.

Meestal worden wizards gemaakt dmv een TPageControl. Als je de verschillende schermen van de wizard physiek apart wilt hebben kan je TFrames gebruiken of je form's via Form.ParentWnd in je TPageControl docken.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
nog ff een ander vraagje..

ik ben nu bezig om 2 formulieren parent en child opties mee te geven. Maar het volgende probleem dient zich aan:

Ik heb dus form1. daar heb ik een close knop op gemaakt. Zodra ik deze indruk, is het de bedoeling dan form2 geopend wordt. Dit heb ik voor elkaar dat is het probleem nog niet. Gebruik de eerder genoemde code daarvoor, maar dan zonder close. dus deze
code:
1
2
3
4
5
6
7
var
    theForm : TFrmtwee;
 
begin
    theForm := TFrmtwee.Create(nil);
    theForm.Show;
end;


Maar nou is het de bedoeling dat wanneer ik de applicatie run, ik form1 zie en dat die actief is, en op de achtergrond form2 al staat maar nog niet actief is. en wanneer ik op de close knop druk in form1, hij overspringt naar form2 en form1 sluit. (let op form1 is mijn mainform :( ). wie kan me helpen?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Als je na die code Hide of Close zet? Je weet toch wat er allemaal kan met Delphi, waar zit je dan nog mee? Je weet niet hoe je de tools moet gebruiken misschien? Als je het mij vraagt ben je gewoon veel te moeilijk bezig.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Ik sluit met volledig bij LordLarry aan. Volgens mij doe je veel te moelijk.
Je wilt je mainform alleen in het begin laten zien, daarna wil je er van af zijn.
Het meest logisch is om iets wat je niet meer wilt hebben gewoon te closen. Maar dat kan niet, want het is je mainform.

Mij lijkt het dus handiger om (zoals LordLarry al in een eerdere post zei) een PageControl te gebruiken. Ik heb hier ook zeer goede ervaringen mee. Het geeft je een goede basis, maar je kunt het wel lekker per page in elkaar zetten.
Wanneer je dat niet wilt kun je altijd nog een mainform maken, die meteen bij het opstarten hiden, maar wel alle form-overgangen laten regelen.
Wat je nu dus als mainform hebt wordt dan form1, je volgende form2, etc.
Je mainform blijft dan op de achtergrond tot je echt afsluit (tegen je mainform close zegt of ergens anders Application.Terminate doet (het laatste is imo wel wat vies)).

Overigens moet je natuurlijk zelf weten wat je doet, maar het lijkt me zinvol om eens serieus voor jezelf na te gaan of je dit wel opnieuw wilt uitvinden. Misschien moet je gewoon even steunen op de ervaring van anderen (en een TPageControl gebruiken ;)).

  • tfk__66
  • Registratie: September 2002
  • Laatst online: 29-10-2025

tfk__66

OS1: Fedora Linux, OS2: W10

Zijn frames niet iets voor jou? Hiermee kun je mijns inziens het dichtste bij hetgene wat jij wilt doen komen ...

Je klikt alleen File - New - Frame ipv File - New - Form en dan gooi je een TFrame component op je mainform. De rest wijst zich vanzelf...

Flp.

GA-Z170XP-SLI - i7 6700K 4.0GHz - 16GB DDR3 - Corsair 300R Wnd - Corsair CX750M - AMD 7950 3GB

Pagina: 1