Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    66

    DELPHI chiudere una form aperta con showModal

    ciao, io vorrei aprire una piccola form usando showModal, in modo da mostrare all'utente una finestra (tipo splash screen) mentre in background eseguo dei file batch.
    All'interno della form così aperta controllo in un ciclo se il file batch ha terminato il suo compito e solo allora questa seconda form si deve chiudere e ritornare il controllo alla principale. Solo che se metto nel codice, dopo essere uscito dal ciclo di controllo, una
    close();
    la seconda form NON si chiude (mentre si chiude se, ad esempio, metto il close sull'evento click di un pulsante ...).
    E' possibile fare cio' che vi ho descritto ?

    grazie a tutti in anticipo
    eK

  2. #2

    .....

    mentre si chiude se, ad esempio, metto il close sull'evento click di un pulsante
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    close;
    end;
    
    procedure TForm1.ciclo;
    begin
    for........do
    begin
    .........
    .........
    .......
    end;
    Button1Click(Sender);
    end;
    ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    66
    grazie, purtroppo così avevo già provato ... a me non funziona.
    La form aperta con showModal si chiude solo se clicco materialmente sul button1, mentre se provo a fare il furbo chiamando la button1click da programma come dici tu la form2 non si chiude !!
    Non ho detto una cosa che forse è importante ... il mio 'ciclo', dal quale esco quando le mie procedure batch sono finite e dopo il quale chiamo la close l'ho messo nell'evento onActivate della form2 (quella aperta con showModal dalla form1) ... forse è importante ? Però anche mettendo lo stesso codice nell'evento onShow o onLoad non cambia nulla

    Uso Delphi6, ma anche questo non dovrebbe essere importante.

    ciao
    eK

  4. #4
    Io proverei così:
    Userei sono il metodi Show e alla form che lavora in modo splah screen applicherei la proprietà
    FormStyle:= fsStayOnTop

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    66
    grazie anche a te, Denis,
    però io vorrei usare la showModal perchè devo fermare l'esecuzione del codice della form1 fino a quando non chiudo la form2 ... il tuo suggerimento (se l'ho capito bene) è un estetismo per tenere in primo piano la form2, ma se la apro con uno show credo che il codice della form1 continui il suo flusso.

    ciao
    eK

  6. #6
    Scusa ma credo di non aver capito bene.
    In pratica tu hai un programma che esegue un programma esterno.
    Nel momento in cui viene eseguito il programma esterno mostri un form in ShowModal il quale deve attendere che il programma esterno si completi per poi chiudersi e ripassare il controllo al form principale vero?

    Se è così allora nel form aperto in ShowModal metterei un timer che ogni 100 millisecondi controlla se la procedura esterna è finita. Se lo è Close() ed il form si chiude.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,462

    Re: DELPHI chiudere una form aperta con showModal

    Originariamente inviato da ekontar
    ciao, io vorrei aprire una piccola form usando showModal, in modo da mostrare all'utente una finestra (tipo splash screen) mentre in background eseguo dei file batch.
    Delega il compito di eseguire i batch alla finestra secondaria, oppure usa un thread separato per l'esecuzione dei programmi, in modo che l'applicazione non rimanga bloccata; se nessuna di queste due casistiche è applicabile, la scelta di visualizzare la Form modale non è quella corretta.

    Credo sia meglio che tu spieghi il "panorama" generale del problema, piuttosto che calcare la mano su una soluzione che magari non è la più adatta, chiedendo poi come piegarla alle tue esigenze.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.