Newsgroup: it.comp.lang.delphi
Titolo: Evento OnActivate

Ho un Form in cui è presente una StringGrid e una Statusbar.
il codice è molto semplice
un evento OnActivate fa due cose:
1) visualizza l'ossatura della StringGrid
2) chiama la procedura Visualizza
La procedura Visualizza  riempie la StringGrid con gli appropriati valori
e visualizza nella un StatusBar il messaggio "Data ultimo aggiornamento....
La form è lanciata da una voce del menu principale.
E fin qui tutto ok viene visualizzata la form, la griglia riempita e il 
messaggio nella Statusbar mostrato.
Adesso chiudo la form , la riapro tutto è ok
tranne il messaggio nella statusbar.
La statusbar resta vuota.
Poichè l'unica chiamata avviene attraverso la FormActivate mi chiedo 
come sia possibile questo.
Deduco che una chiusura della finestra non elimina quindi il Form 
completamente ma ne lascia una traccia da qualche parte, cosicchè alla 
successive attivazioni non viene più innescato l'evento OnActivate.
Se il mio ragionamento è giusto, come fare a risolvere il problema??
Distruggendo in qualche modo la finestra??  forse con qualcosa del tipo 
delete ecc....
o basterebbe per distruggerla una buona martellata sul monitor????  :-)),
Grazie a quanti mi illumineranno...............

 Se il mio ragionamento è giusto, come fare a risolvere il problema??
l'evento OnShow?
V. 

 completamente ma ne lascia una traccia da qualche parte
Usa l'evento OnShow.
Le form, per default, non vengono distrutte alla chiusura, ma solo
nascoste alla vista.  La tecnica che personalmente adotto è quella di non
creare tutte le form dell'applicazione a priori ma creare la form che
serve, quando serve.
In questo caso, l'evento OnClose avrà l'Action impostata a caFree.
In questo caso, che si usi OnCreate, OnShow o OnActivate, risulta del
tutto indifferente, anche se per coerenza, le operazioni strettamente
legate alla creazione della form vanno nel primo, quelle strettamente
legate alla visualizzazione nel secondo e quelle strettametne legate
all'"attivazione" nel terzo (sempre a meno di capire che si intenda per
"attivazione").
In realtà, il proliferare di così tanti eventi, in Delphi, benché renda il
tutto più flessibile, può confondere le idee.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 "attivazione").
per l'appunto credo che il mio concetto di attivazione non sia esatto,
puoi darmi qualche ragguaglio sul suo vero significato...  grazie


Allora il tuo uso dell'evento onActivate mi sembra corretto in quanto 
(come scritto dall'help e verificato) si scatena al ricevimento del focus
della finestra e quindi alla sua prima visualizzazione, e alle successive
volte che  riceverà il focus.
l'onShow si scatena quando la Proprietà Visibile diventa True quindi la
prima volta sicuramente poi basta (a menoche non si cambi Visibile a false
e poi true).
Ciao Mario.
--- posted by geoForum on 
http://www.delphiedintorni.it

 
OK. ho provato inserendo
Visible := true;
Visible := false;
ma Delphi mi solleva un'eccezzione dice che non può cambiare visible in
onShow o in onHide.

 
OK. ho provato inserendo



Giusto! nel momento che Delphi deve mostrare la Form tu gli dici che non
lo deve fare! (spiegazione discorsiva).
comunque l'evento Activate si innesca ad ogni attivazione della Form.
e [cit.]
successive attivazioni non viene piů innescato l'evento OnActivate.
non mi sembra possibile.
In quanto all'uso dell'evento onShow non si manifesta sempre quando
'appare' la Form. se minimizzi e poi massimizzi la Form non si innesca.
Ciao mario
