Newsgroup: it.comp.lang.visual-basic
Titolo: [?][MDI] Discriminare un'azione in funzione del figlio

Ciao a tutti.
In seguito ai vostri consigli, ho deciso di spostare tutti i menu' dei
figli nel form padre e di attivare soltanto i menu' relativi al figlio
attuale.
Ricordo che siamo in presenza di 3 tipi diversi di figli --da cui sono
gia' nate facili ironie ;)-- e che ognuno dei quali ha alcune voci di
menu' "tipiche" tipo File/Chiudi File/Salva ecc... e altre
"personali", dipendenti dal tipo di figlio.
Ad esempio, i figli per la composizione dei testi hanno Elenco/Puntato
e Modifica/Seleziona tutto mentre i figli per la creazione di tabelle
hanno Tabella/Inserisci linea e quelli per l'assemblaggio di libretti
finiti hanno Paragrafo/Aggiungi paragrafo.
Allora ho, col mio bravo PETextEdit aperto i miei files .frm e ho
copiato/incollato tutte le descrizioni dei menu' nel frmMain.frm. Poi
ho cancellato i menu' dai form originari e cosi' tutto ora e' a posto.
Naturalmente, a seconda che il figlio attivo sia un testo, una tabella
o un libretto, la voce File/Salva --ad esempio-- dovra' comportarsi
diversamente, perche' il salvataggio di un testo e' diverso da quello
di un libretto. Allora ho 2 alternative:
- nella procedura mnuFileFileSalva del frmMain inserisco una select
case su 
me.activeform.name
 e da li' capisco il tipo di form attivo
- nella procedura mnuFileFileSalva chiamo una generica SalvaDocumento
in mdlCore.bas a cui passo come parametro me.activeform e in
quest'ultima metto il select case sul name del form che ricevo come
parametro.
E' quasi la stessa cosa, ma secondo voi, qual e' la piu' elegante? Io
sarei quasi per la seconda, perche' mi piace tenere il codice dei form
il piu' scarno e pulito possibile per concentrarmi di piu' sui moduli.
In previsione di avere altri tipi di figli credo di riuscire a gestire
meglio la cosa se tengo tutto in un modulo che in un form.
Altra cazzatina: considerando che quando lavoro sull'assemblaggio di
un libretto non mi interessa la voce Elenco/Elenco puntato, per
disattivarla voi la mettereste disabled o invisible?
Saluti e grazie.
Chiaramente, scusate la banalita' di queste 2 domande, ma prima di
cambiare idea per considerazioni piu' furbe di quelle che ho fatto sul
momento, preferisco parlarne con voi :)
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-IV --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

 disattivarla voi la mettereste disabled o invisible?
Meglio renderla invisibile.
[...]
CiaoZ
SebaMix

disattivarla voi la mettereste disabled o invisible?
Invisibile, come ha detto Sebastiano: perché se fosse disabled l'utente crederebbe che tale funzione
č in qualche modo attivabile, mentre, con il tipo di documento attivo, non c'č verso.
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

 di un libretto. Allora ho 2 alternative:
[SNIP]
Te ne offro una terza che, anche se implica la modifica del codice dei form
figli che volevi evitare, secondo me ancora piu' elegante, in quanto evita del
tutto un select case ed e' quindi espandibile a piacimento:
Definisci il metodo pubblico SalvaDocumento in ogni figlio, mantenendo eventuali
parametri standard in tutte le dichiarazioni
Public Sub SalvaDocumento()
'codice personalizzato per ogni figlio
End Sub
A questo punto, nel form MDI esegui semplicemente:
Private Sub mnuFileFileSalva_Click()
Me.ActiveForm.SalvaDocumento
End Sub
Voila', ora puoi aggiungere figli, cambiare i nomi alle form ecc. senza
preoccuparti di ricostruire ogni volta un Select Case
Ciao
--
Luca Dormio
luca....@tin.it