Newsgroup: it.comp.lang.delphi
Titolo: Form "On Top"

Salve a tutti!
Una domandina semplice semplice...
Che API di devo utilizzare per aprire una form in modalità "on top" tipo il
Task Manager di Windows?
Grazie a tutti!
Seek

 tipo il Task Manager di Windows?
Non ti va bene Form.Style := fsStayOnTop?
 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or
    SWP_NOSIZE or SWP_NOACTIVATE);
Saluti
Paolo Arosio
-- 
"La dimostrazione dell'esistenza di specie intelligenti nell'universo
 e' che non ci vengono a trovare"





Ciao...provo a richiedere quello che chiesi tempo fa..
Ho un'applicazione (scritta in Delphi 6) che parte in background nella tray
icon.
nel momento in cui la devo richiamare
ho bisogno che stia "Always on top" e sempre con il
focus.
Sono riuscito a far stare l'applicativo sempre davanti con Form.Style :=
fsStayOnTop
ma non sono riuscito a fare in modo che non perda mai il fuoco anche se
l'utente seleziona
un qualsiasi oggetto sottostante.
Ho provato con qualche messaggio di windows che intercetta quando una form
perde il fuoco
ma non sono riuscito a risolvere...
voi ne sapete qualcosa?
grazie
Ale

 un qualsiasi oggetto sottostante.
la cosa si sta facendo preoccupante...
Mi ricorda qualcosa di già visto ai tempi del Visual Basic 4 (finestre 
always-on-top e always-focused a livello di sistema). 
Mi rifiuto fermamente di collaborare a far rivivere un orrore del genere!!! 
(e sinceramente non so neanche di che utilità *pratica* potrebbe essere)
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)


Ti spiego....
C'è un applicativo a tutto schermo con cui l'operatore può interagire solo
ed esclusivamente tramite touch screen.
Tramite lettura di un codice a barre viene attivato un task che gira in
background e che consente di fare alcune operazioni.
Ora mi serve che la finestra di questo task (che nn occupa tutto lo
schermo)..quando viene attivata
sia sempre davanti e che l'operatore nn abbia la possibilità di premere
qualche pulsante nell'applicazione sottostante.
Solo nel momento in cui do conferma sul task iconizzo il task e solo allora
posso riutilizzare l'applicazione sotto..
Capito?
Hai qualche idea?
L'applicativo a tutto schermo nn lo posso modificare più di tanto...
ciao e grazie
Ale

 L'applicativo a tutto schermo nn lo posso modificare più di tanto...
in effetti io avevo in mente le finestre di dialogo modali a livello di 
sistema (per intenderci, quelle odiosissime di Windows 3.1, che finchè non  
premevi Ok o Annulla, non potevi fare nient'altro).
Ora invece ho provato a intercettare il messaggio WM_KILLFOCUS, ho provato 
coll'evento TApplicationEvents.OnDeactivate, e altre strade, ma con questi 
mezzi NON ci sono riuscito, a ottenere quello che chiedevi tu (un'altra 
soluzione sarebbe quella di massimizzare la finestra "always on top", 
disabilitare la combinazione ALT+TAB e nascondere la task bar). Ho provato 
persino con un Timer, a settare il focus sulla finestra a intervalli 
regolari...
In ogni caso, il messaggio WM_KILLFOCUS viene effettivamente spedito dalla 
finestra, prima di perdere il focus, però a quanto pare da quel momento in 
poi l'applicazione non è più in grado di riportare il focus su se stessa (a 
questo proposito ho provato -interecettando WM_KILLFOCUS- a spedire un 
messaggio WM_ACTIVATE a se stessa).
Questo secondo le mie limitate conoscenze.
L'unica cosa che non ho ancora provato è quella di scrivere uno hook system-
wide di tipo WH_GETMESSAGE che intercetti i WM_KILLFOCUS. Potrei anche 
sbagliarmi e spero che in tal caso chi ne sa più di me mi smentisca. Comunque 
non sono evidentemente molto capace a scriverne, visto che l'ultima volta ho 
mandato in palla il sistema operativo!
