Newsgroup: it.comp.lang.visual-basic
Titolo: Visualizzazione di un controllo in base all'impostazione di un altro

SAlve a tutti i frequentatori del nwsgroup...
Torno a rivolgermi a voi per un quesito che sicuramente troverà una
banalissima soluzione, ma che io non riesco ad individuare.
In una form ho vari controlli checkbox, in base al valore di tali checkbox,
devo visualizzare o nascondere le informazioni aggiuntive...
ad esempio se il checkbox "Vaso a membrana" ha il valore true (significa che
l'impianto ha un vaso a membrana) allora devo visualizzare i controlli
relativi alle info sul vaso a membrana tipo diametro, litri ecc...
Logicamente se il vaso a membrana non è presente nell'impianto tali
controlli devono essere nascosti.
Lo stesso vale per una combobox: in base al valore che assume devo
visualizzare un frame oppure un altro.
Logicamente i valori assunti sono ricavati da un database.
Sotto quale evento voi mettereste la routine che controlla il valore del
controllo e imposta la proprietà visible degli altri?
Per questa form in particolare potrei anche utilizzare leevento form_load,
ma in altri casi come fareste?
Grazie mille dell'aiuto.









[*Paolo C.* = 
pc...@fastwebnet.it
 in
news:xuHAb.11519$
5o6....@tornado.fastwebnet.it
] ha scritto:

L'aiuto lo devi dare a noi. Ho letto il tuo quinto messaggio uguale. Stavo
già fuori di testa al terzo...
Vedi tu. Io bevo solo whisky...
-Posiziona lo stato "preferenziale" di _tutti_ checkbox in Form_Load. Ho
detto tutti, indipendentemente dal contenuto del database. Chi comanda è
l'utente e solo lui può dire quel che vuole. Se lo cerca significa che non
sa quel che c'è.
-In ogni evento Check1_Click prevedi (ovviamente se lo stato dello specifico
checkbox ha degli effetti su altri controlli) un test del tipo:
        If Check1 is Screen.ActiveControl=False then Exit sub
        'Setti lo stato degli altri in funzione dello stato di questo
checkbox - Se proprio vuoi, tale stato/visibilità può conseguire dai
contenuti del database. Io, comunque, lo sconsiglio.
-Prevedi un bottone da cliccarsi quando l'operatore ha fatto tutte le sue
scelte. Solo al suo click avvierai la consultazione del database

ti ringrazio del validissimo aiuto, ma credo di essermi spiegato male...
l'utente deve leggere la scheda informativa di un impiando di riscaldamento
condominiale...
volevo fare in modo da evitare di visualizzare le textbox relative ai dati
di una determinata caratteristica dell'impianto, se questa caratteristica
non è prevista nell'impianto.
Cioè: nella tabella i campi aggiuntivi sono sempre previsti, ma nel caso che
il vaso a membrana non sia presente nell'impianto allora questi sono vuoti e
il campo si/no del database access contiene un valore "no"...
Ecco, io volevo che, alla lettura dei dati, all'utente sia nascosta tutta la
parte informativa del vaso a membrana se il relativo campo contiene un
valore "no", questo perchè se così non fosse la textbox rimarrebbe vuota.
naturalmente, se passo al record successivo e in questo record il campo
"vaso a membrana" contiene un valore true, i relativi dati dovranno essere
visualizzati all'utente.
Questo lo ottengo facilmente quando si tratta della combobox perchè
inserisco, nell'evento change il codice necessario a settare la proprietà
visible dei controlli che mi interessano. Per i checkbox invece non riesco a
trovare nulla di simile.
Quindi dovrei controllare il valore nell'evento data1_reposition, se uso il
controllo data, ma dato che ho deciso di evitare in questa sezione del
programma vorrei sapere come fareste voi.
Spero di essermi spiegato bene.
PS: ci sono 4 messaggi perchè inspiegabilmente OE mi dava errore quando
tentavo di inviare il messaggio, poi l'ho chiuso e riaperto e me lo ha
inviato, e mi sono accorto che gli altri erano stati ugualmente inviati...
boh!
grazie mille atutti!

 inviato, e mi sono accorto che gli altri erano stati ugualmente inviati...
Ovviamente se il messaggio di OE č quello del server non disponibile i tutti
tuoi messaggi vengono inviati appena ristabilito il collegamento: inutile
tentare l'invio 10 volte.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

si...
grazie mille.
cmq in posta in uscita c'era sempre un solo messaggio... e l'ha continuato a
fare... mi dava errore ma il messaggio veniva inviato ugualmente, non in una
fase successiva.

 sezione del programma vorrei sapere come fareste voi.
Qualunque sia il metodo che adotti per caricare i dati, l'evento Click si
verifica se lo stato cambia, non č necessario che l'operatore cambi tale
stato. Quindi ti dovrebbe bastare posizionare i vari stati e conseguenti
visualizzazioni in fase di prima preparazione della finestra. Questa
cambierŕ grazie all'esecuzione del codice nei vari eventi.
In alternativa, concettualmente piů semplice e con una gestione concentrata
in una sola parte del programma, puoi testare lo stato di tutti i
campi/oggetti dopo il caricamento di un record e adeguare la visualizzazione
di tutta la finestra.





diciamo che è da quando l'ho scritto che ci sto sbattendo la testa, e non mi
riesco a capacitare del fatto che non funzioni...
ho scritto questo codice:
Private Sub Form_Activate()
  If chkTermostatoPompe.Value = True Then
    cmbTipoTermostatoPompe.Visible = True
    Label7.Visible = True
   Else
    cmbTipoTermostatoPompe.Visible = False
    Label7.Visible = False
 End If
 If chkTermostatoCaldaia.Value = True Then
    cmbTipoTermostatoCaldaia.Visible = True
    Label8.Visible = True
   Else
    cmbTipoTermostatoCaldaia.Visible = False
    Label8.Visible = False
 End If
 If chkManometro.Value = True Then
    txtManometroFondoscala.Visible = True
    Label6.Visible = True
   Else
    txtManometroFondoscala.Visible = False
    Label6.Visible = False
 End If
 If chkCoibentazioneCannaFumaria.Value = True Then
    txtDiametroCannafumaria.Visible = True
    Label9.Visible = True
    txtLunghezzaCannaFumaria.Visible = True
    Label10.Visible = True
   Else
    txtDiametroCannafumaria.Visible = False
    Label9.Visible = False
    txtLunghezzaCannaFumaria.Visible = False
    Label10.Visible = False
 End If
 If cmbTipoVasoEspansione.Text = "Aperto" Then
    fraVasoEspAperto.Visible = True
    fraVasoEspChiuso.Visible = False
  Else
    fraVasoEspAperto.Visible = False
    fraVasoEspChiuso.Visible = True
 End If
End Sub
L'ho scritto nell'evento form_activate perchè tanto in questo form non ho
bisogno di cambiare record, ma è un form che richiamo per visualizzare dati
aggiuntivi su di un determinato record (non sarebbe entrato tutto in una
schermata)...
ebbene ho anche inserito tutte le espressioni di controllo che, all'atto
dell'esecuzione assumono i seguenti valori:
Watch :   :   chkCoibentazioneCannaFumaria.Value : 0 : Integer :
ControlloISPESL.Form_Activate
Watch :   :   chkManometro.Value : 1 : Integer :
ControlloISPESL.Form_Activate
Watch :   :   chkTermostatoCaldaia.Value : 0 : Integer :
ControlloISPESL.Form_Activate
Watch :   :   chkTermostatoPompe.Value : 1 : Integer :
ControlloISPESL.Form_Activate
Watch :   :   cmbTipoVasoEspansione.Text : "Aperto" : String :
ControlloISPESL.Form_Activate
come vedete i vari checkbox assumono valori differenti...
Eppure il programma va sempre nel ramo ELSE dei vari if... funziona solo nel
caso della combobox...
cos'hanno di particolare i checkbox???
ho provato anche ad utilizzare un controllo data e scrivere la stessa
routine nell'evento reposition... medesimo risultato!
Dove ho sbagliato?
grazie mille
(cmq continua a darmi l'errore OE, ma continua ad inviarmi il messaggio..
BOH!)

che figura di m****!!!
scusate ragazzi mi si è appena accesa la lampadina...
true=-1 e non 1!!!! quindi è normale che se i checkbox assumono solo valori
0 1 e 2 il programma va sempre nel ramo else...
scusate il post inutile :-)
saluti a tutti e uon lavoro

   If chkTermostatoPompe.Value <>0 Then
