Newsgroup: it.comp.lang.delphi
Titolo: Form Attive...

Ciao a tutti,
l'applicazione che sto realizzando ha un Form principale (che conicide con
il MainForm)
che vorrei rimanesse sempre in secondo piano rispetto agli altri form aperti
(con FormName.Show).
Il risultato che vorrei ottenere è molto simile a quello che risulta se si
utilizza la proprietà FormStyle:
nel Form principale,     FormStyle := fsMDIForm,
negli altri ,                    FormStyle := fsMDIChild.
In questo modo però, all'avvio del programma i FormChild sono già attivi e
non è possibile chiuderli,
ma al massimo ridurli ad icona. Inoltre vengono sovrapposti da alcuni
oggetti del ManiForm.
Non so se avete già risposto ad una domanda simile;
ho letto le FAQ e ho cercato fra i messaggi passati, ma non sono riuscita a
trovare nulla di simile.
Grazie comunque,
Ilaria Brighenti.

 oggetti del ManiForm.
normalmente la finestra che ha la proprietà FormStyle:=fdMDIChild non si
chiude ma si riduca a icona. Ciò è controllato dal parametro Action di
OnClose. il valore di Action è caMinimize. quindi per chiudere le finestre e
liberarne la memoria associata bisogna atribuire al parametro Action il
valore caFree nel OnClose...
spero di esserti stato utile..
Salvatore Gigliuto


Ti ringrazio, questo potrebbe risolvere uno dei problemi.
Ma credi che l'unico modo per ottenere il risultato che desidero,
sia di utlizzare la proprietà FormStyle?
Ciao, Ilaria

 sia di utlizzare la proprietà FormStyle?
Sicuramente è uno dei modi per ottenerlo senza troppe difficoltà...
poi non so...forse altri in questo NG possono darti qualche altra dritta

Il fatto che i form vengono automaticamente creati alla partenza
della applicazione se imposti i form come AutoCreate nelle 
opzioni del progetto.
In pratica, i form standard vengono creati ma non mostrati.
I form di tipo MdiChild vengono creati e mostrati.
Per vedere le opzioni del progetto:
Project-Options.
Qui, tra i vari tabsheets ne esiste uno dedicato ai form dove si
imposta quale è il mainform della applicazione
e quali form (e datamodule..) devono essere automaticamente creati
alla partenza della applicazione e quali no.
I form non creati automaticamente vanno quindi creati a mano
prima di essere utilizzati:
MioForm := TMioMdiChildForm.Create(Sef) 
MioForm.Show;
Bye
As
 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

MioForm.Show;
In ogni caso, sconsiglio di utilizzare la tecnica MDI, pare
sia in fase di abbandono da parte di MS.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)

 As
Grazie, ci provo subito.
Ma come spiegate il fatto che le FormChild rimangano in secondo piano
rispetto ad alcuni oggetti del mainform?
Per la precisione si tratta di TPanel.
Ciao,
    Ilaria


...hai una proposta alternativa?
ciao e grazie,
    Ilaria

 ...hai una proposta alternativa?
L'alternativa a usare l'MDI e' NON usare l'MDI ;)
Scrivi i tuoi form come se fossero dei normali form.
Inoltre, non credo che quanto chiedi sia fattibile, 
nel senso che, almeno che io sappia, e' possibile 
fare in modo che uno o piu' form siano sempre in primo 
piano, ma non e' possibile che siano in primo piano
solo rispetto a un altro form.


 solo rispetto a un altro form.
Grazie per l'interessamento,
ciao,
    Ilaria

 L'alternativa a usare l'MDI e' NON usare l'MDI ;)
Forse dico una cavolata, vista l'ora ;-), potresti fare un main dove dentro
ci attacchi di volta in volta le varie form che ti servono qualcosa del
tipo:
 oFrm := TMiaForm.create(self);  // self è il main
 oFrm.parent := self;
 oFrm.Show;
Saluti