Newsgroup: it.comp.lang.delphi
Titolo: Frezzare lo schermo

Ciao a tutti,
  ho un piccolo problema nella visualizzazione di 2 errori.
Ecco di cosa si tratta.
 
Ci sono 2 particolari casi di errori che, se lavora bene l'operatore non 
dovrebbero verificarsi, possono capitare in casi limite.
Quando si verificano esce il messaggio conseguente e il risultato da 
ottenere e' che quando il messaggio viene visualizzato quel messaggio non si 
sposta piu' del video e per nessuna ragione possa essere tolto.
In altre parole (ci ho pensato adesso ed e' anche piu' semplice) il 
risultato da ottenere e' come quello della finestra dello shutdown di 
windows, ovvero per uscire da quella form si deve fare una delle scelte 
proposte, tutto il resto e' bloccato.
 
Credo sia poco facile da fare, in alternativa ho provato con stayontop ma a 
volte (non so perche') l'avviso finisce sotto ad altre form di altri 
programmi.
 
Grazie a tutti per l'interesse
 
Ciao
 
Daniele 
 

Lo avevo fatto un po' di tempo fa in casi simili ai tuoi.
 
Nel mio caso avevo una form di errore (chiamata rigorosamente con 
showmodal e non con show per ovviare al problema che, ogni tanto, la 
metteva in secondo piano) a cui avevo aggiunto una funzioncina prima 
della chiamata showmolad vera e propria. Overo creo una form a pieno 
schermo senza menù, barra del titolo e bordo trasparente che distruggo 
all'uscita della finestra di errore. Semplificando e senza mettere le 
mani sul codice della form di errore si puo' osare una funzione tipo:
 
Function BloccaTutto(Parent : Thandle) : TForm;
Var
   F : TForm;
Begin
   // -----------------------------------------------------
   // Creazione finestra
   // -----------------------------------------------------
   F := TForm.Create(Parent);
 
   // -----------------------------------------------------
   // Nessun bordo e niente barra del titolo
   // -----------------------------------------------------
   F.BorderIcons := [];
   F.BorderStyle := bsNone;
 
   // -----------------------------------------------------
   // Settaggio dimensione a tutto schermo
   // -----------------------------------------------------
   F.Top    := 0;
   F.Left   := 0;
   F.Height := Screen.Height;
   F.Width  := Screen.Width;
 
   // -----------------------------------------------------
   // Settaggio form trasparente
   // -----------------------------------------------------
   F.Brush.Style := bsClear;
   F.BorderStyle := bsNone;
 
   // -----------------------------------------------------
   // Salvataggio finestra
   // -----------------------------------------------------
   Result := F;
 
   // -----------------------------------------------------
   // Visualizzazione form
   // -----------------------------------------------------
   F.Show;
End;
 
e si puo' o includerla nell'oggetto di generazione dell'errore oppure 
usarla fuori cosi':
 
Var
   Blocco : TForm;
Begin
   Blocco := BloccaTutto(Self);
 
   <..qui' visualizzo l'errore..>
 
   Blocco.Free;
End;
 
Includendola nella form di errore è più semplice in quanto puoi 
attivarla sul OnCreate e distruggerla sul Destroy a prescindere che la 
form sia chiamata con show o show modal
 
vedi se può esserti di aiuto,
Ciao

Dimenticavo....
se vuoi disabilitare anche i tasti alt+tab, ctr+alt+del eccetera puoi 
provare:
 
Procedure Disabilita_Funzioni;
Var
   Dummy   : Integer;
   Abilita : Integer;
Begin
   Dummy := 0;
 
   Abilita := 0;
 
   //Disabilita ALT+TAB
   SystemParametersInfo( SPI_SETFASTTASKSWITCH, Abilita, @Dummy, 0);
 
   //Disabilita CTRL-ALT-DEL
   SystemParametersInfo( SPI_SCREENSAVERRUNNING, Abilita, @Dummy, 0);
End;
 
Ovviamente per riabilitarli poni Abilita := 1;
 
oppure lavora direttamente sul registro come spiegato qui' 
http://embarcadero.newsgroups.archived.at/public.delphi.nativeapi/200912/0912052510.html