Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Creazione di una classe con elementi grafici

Dovrei realizzare il pannello sinottico di controllo di un impianto
termoidraulico, in particolare ho un certo numero di elementi grafici
da animare in relazione ai dati che mi provengono dalla seriale.
In considerazione del fatto che la maggior parte degli elementi sono
tutti dello stesso tipo (si tratta di valvole ad azionamento
motorizzato) e possono assumere stati finiti, ho disegnato una serie
di bitmap contenenti i vari stati, in modo tale da poterli piazzare
nel sinottico in modo corretto, istante per istante.
Purtroppo ho qualche difficoltà nella creazione della classe: non so
bene come definirla, anzi, sono nel buio più completo. So che dovrei
ottenere alla fine un oggetto, di tipo image, che io possa posizionare
con Top e Left, con almeno una proprietà Stato, ma non riesco ad
andare avanti.
C'è nessuno che possa darmi qualche dritta?
Ciao,
Marcello

 Purtroppo ho qualche difficoltà nella creazione della classe:
[SNIP]
Una soluzione, forse diversa da quella che avevi in mente, potrebbe comunque
essere quella di usare un controllo ImageList (con le varie bitmap separate)
oppure PictureClip (in questo caso con un unica bmp che contiene una
"strisciata" con i vari stati); in entrambi i casi puoi accedere attraverso un
indice numerico all'immagine che ti serve e disegnarla su un normale controllo
image/picture oppure sul form ecc.
esempio con ImageList (scusa i termini da profano di valvole ;-))
Enum TValvola
    valvAperta=1
    valvChiusa=2
    valvSemiAperta=3
End Enum
Private Sub Form_Load()
'carichiamo le immagini in un imagelist
ImageList1.ListImages.Add valvAperta, , LoadPicture("valv_aperta.bmp")
ImageList1.ListImages.Add valvChiusa, , LoadPicture("valv_chiusa.bmp")
ImageList1.ListImages.Add valvSemiAperta, , LoadPicture("valv_semiaperta.bmp")
End Sub
Private Sub DrawValvola(ByVal TipoValvola As TValvola)
'assegnamolo ad un controllo Image
Image1.Picture = ImageList1.ListImages(TipoValvola).Picture
'oppure disegnamolo in un punto particolare
'di un picturebox
ImageList1.ListImages(TipoValvola).Draw Picture1.hDC, 30, 50, imlNormal
End Sub
Ciao
--
Luca Dormio
luca....@tin.it

Ciao,
è esattamente quello che farei anch'io!...
A meno che non si desideri creare un controllo ActiveX che riceve il valore
letto e si comporta in un modo particolare (es. valore letto fuori
tolleranza, circuito aperto/chiuso....). Ma qui le cose si complicano un
pochino...
Ciao
Franco

 wrote in message
news:3a51d905....@news.tin.it...

L' analisi e' un po' scarna, pertanto ti scrivo come mi immagino l'
interfaccia dell' oggetto, che potremmo chiamare cValvola ("c" sta per
classe, "Valvola" si autodocumenta)
Ha un metodo costruttore che ne imposta determinati valori iniziali ed un
metodo distruttore che rilascia eventuali riferimenti ad oggetti, chiude
file aperti, ecc.
Avra' una proprieta' di lettura / impostazione dello stato in base ad un
flag che specifica di quale stato si tratta ed eventualmente specifica dei
parametri aggiuntivi.
I flag di stato sono elencati in un enumeratore visibile dal codice esterno.
Ha un metodo di disegno su un canvas che puo' essere, indifferentemente, un
form, una picture box, una printer e, volendo, qualsiasi cosa abbia un hDC.
Il metodo di disegno applica la bitmap giusta sulla destinazione giusta in
base ai parametri ricevuti dal codice chiamante.
Internamente l' oggetto fara' anche delle elaborazioni, di cui dovra' poter
fornire l' output.
Le immagini vengono caricate da un file di risorse, in modo da memorizzarle
una volta sola e rendere il codice portabile.
Ce n'e' abbastanza per andare avanti ?
Ciao
Aldo