Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: guest621 - Giugno 02, 2012, 10:59:57 pm

Titolo: Chiudere tutti i form
Inserito da: guest621 - Giugno 02, 2012, 10:59:57 pm
Ciao a tutti, ho creato un programma che se clicco su un pulsante mi rende invisibile la form1 e rende visibile la form2, però quando esco dalla form2 cliccando sulla X, la form1 rimane sempre aperta, cioè, il processo è sempre attivo, come faccio a chiudere tutto il programma dalla form2? Grazie mille.
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 02, 2012, 11:09:10 pm
Oddio, per come la capisco, basta che metti un Halt(0).
Ma credo di non aver capito bene....
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 02, 2012, 11:10:46 pm
o  in alternativa Application.Terminate;

Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 02, 2012, 11:19:35 pm
o  in alternativa Application.Terminate;

Grazie ho risolto con questo codice, scusa, ma sono agli inizi, grazie ancora per l'aiuto ;D
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 02, 2012, 11:31:52 pm
Di nulla.
Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 03, 2012, 12:40:30 am
Mi collego qui, perchè creare una nuova discussione sarebbe uno spreco, comunque adesso che ho risolto però ho un'altro ptroblema xD. Ho creato un'altro form, quando clicco il pulsante sul form1, il form1 diventa invisibile e il form2 appare, poi metto uno Sleep(); di mezzo e dopo tot secondi il form2 diventa invisibile e appare il form3, ecco il punto è che se io metto:
Codice: [Seleziona]
Form2.Visible := True;
sleep(5000);
Form2.Visible := Flase;
Form3.Visible := True;
il form si vede, ma il contenuto no, dopo 5 secondi appare il contenuto, perchè? Grazie.
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 03, 2012, 01:08:26 am
Credo sia solo un probleama di update della terza form.
Prova a mettere un Form3.Update per vedere se è quello il problema.
Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 03, 2012, 01:12:40 am
Credo sia solo un probleama di update della terza form.
Prova a mettere un Form3.Update per vedere se è quello il problema.

Grazie ha funzionato, però siccome io nella form2 ho una progressbar, se metto lo sleep(); anche la progressbar si ferma, non c'è un modo per far andare la progressbar con lo sleep();?
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 03, 2012, 01:31:07 am
Hihi, no.
Con lo sleep no.
Devi usare un contatore ... di tick.
Mi spiego meglio:
Codice: [Seleziona]
startTick := GetTickCount;
while GetTickCount  - startTick < 5000 do;
in questo modo non fermi il processo.
Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 03, 2012, 02:24:26 am
Hihi, no.
Con lo sleep no.
Devi usare un contatore ... di tick.
Mi spiego meglio:
Funziona uguale allo sleep(); ferma anche lui il processo.
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 03, 2012, 03:01:10 am
Nel ciclo while do devi mettere qualche cosa.
Ad esempio l'avanzamento della progressa bar ......
Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 03, 2012, 03:21:11 pm
Nel ciclo while do devi mettere qualche cosa.
Ad esempio l'avanzamento della progressa bar ......

Ho messo dopo "do": ProgressBar1.Position := ProgressBar1.Position+1, ma mi dice che non riconosce ProgressBar1, allora siccome la progressbar è nel form2, ho messo nella Unit1: uses Unit2, ma continua a non riconoscere ProgressBar1.
Titolo: Re:Chiudere tutti i form
Inserito da: Stilgar - Giugno 03, 2012, 06:11:55 pm
Devi stare attento al namespace.
Non è Unit2 ma Form2 che devi usare.
Unit2 rende visibile Form2, ma non puoi accedere direttamente alle sue properties.
Devi dire al compilatore cosa vuoi usare. Form2.ProgressBar. ;)
Titolo: Re:Chiudere tutti i form
Inserito da: guest621 - Giugno 03, 2012, 06:36:57 pm
Devi stare attento al namespace.
Non è Unit2 ma Form2 che devi usare.
Unit2 rende visibile Form2, ma non puoi accedere direttamente alle sue properties.
Devi dire al compilatore cosa vuoi usare. Form2.ProgressBar. ;)

Grazie mille! Se postavo sul forum in inglese come minimo la soluzione saltava fuori una settimana dopo (per essere buoni).