Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [DELPHI 2010] Forzare la visualizzazione della form

    Buondì a tutti,

    Mi sto sicuramente perdendo in un bicchiere d'acqua ma a prescindere dal volume del liquido, sto affogando

    la mia situazione è questa:

    eseguo il programma, visualizzo la form di login. valido la password e faccio lo show della form principale.

    allo show della form principale eseguo un fottio di statement tra le quali alcune procedure che fanno dei DL di file.

    quello che io vorrei è che PRIMA di eseguire ogni DL la form principale venisse ridisegnata in modo che se aggiorno la caption di una label con qualcosa tipo "Sto scaricando il file pincopallino" l'utente sappia cosa sta succedendo.

    Ho provato con Repaint, Invalidate, Refresh, application.processmessages... non c'è verso, la form non compare nemmeno finchè non ha finito tutto quello che c'è da fare, compreso anche i DL di tutti i file.

    Non vorrei mettermi dentro ad un multithread, non mi importa granchè del fatto che si "blocchi" il programma durante i DL, ma almeno che l'utente abbia visibilità di cosa sta facendo il programma.

    è sicuramente una cavolata ma non riesco a venirne a capo

  2. #2
    L'evento OnShow viene chiamato prima che il form venga visualizzato, pertanto è perfettamente coerente che tu non lo veda prima che l'intero evento sia processato.

    A questo punto i fatti sono due, o ti imbarchi nel multithreading oppure scegli un evento diverso come p.e. OnActivate. Occhio che eventi come OnActivate, OnPaint... etc. possono essere chiamati diverse volte nel tempo di vita di un form. Dovresti quindi evitare il caricamento dei dati quando non è voluto.
    ...

  3. #3
    temevo una risposta simile...

    Provo a spostare tutto in un OnActivate...

    Tnx

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

    Re: [DELPHI 2010] Forzare la visualizzazione della form

    Originariamente inviato da FengHuang
    Ho provato con Repaint, Invalidate, Refresh, application.processmessages... non c'è verso, la form non compare nemmeno finchè non ha finito tutto quello che c'è da fare, compreso anche i DL di tutti i file.
    Fermo restando che il suggerimento già dato sul multithreading a mio avviso è validissimo e sarebbe comunque la strada corretta da seguire, prova a postare una parte del codice per capire se i metodi che hai indicato sopra sono usati nel modo corretto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Temporaneamente ho bypassato il problema spostando tutto quanto nell'OnActivate.

    il multithreading al momento mi affascina ma non avendo mai fatto nulla in questo ambito e avendo delle consegne da rispettare mi riservo lo studio per tempi più tranquilli...

    avete mica sotto mano un dproj molto banale di esempio sul multi?

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,325
    Originariamente inviato da FengHuang
    avete mica sotto mano un dproj molto banale di esempio sul multi?
    Vai con una ricerca su Google prima...

    Poi, in caso di problemi, apri una discussione separata, visto che l'argomento è diverso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    ok, rimango IT...

    a prescindere dalla posizione errata degli statement, che differenza c'è tra refresh, repaint o invalidate?

    ho googlato un po ma ho letto alcuni dire che sono intercambiabili altri a dire che son diversi ma senza spiegare in cosa siano sostanzialmente differenti...

    per come la vedo io, se sono 3 comandi distinti direi che la differenza deve esserci... o no?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,325
    Originariamente inviato da FengHuang
    ho googlato un po ma ho letto alcuni dire che sono intercambiabili altri a dire che son diversi ma senza spiegare in cosa siano sostanzialmente differenti...
    Bisogna "googlare" bene.
    Vedi qui.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.