Newsgroup: it.comp.lang.visual-basic
Titolo: controllo tipo monthview ma un po diverso

domanda per i super-esperti di OCX di terzi.
sto cercando un controllo che assomigli al MonthView del VB, ma che abbia
una peculiarità: visualizzi SOLO I MESI, e non i giorni. in pratica una
griglietta in cui, a differenza del monthview, ogni griglia corrisponda ad
un anno, e vi siano visualizzati i 12 mesi...
qualcuno sa dove posso trovarlo? possibilmente free, ma anche se a pagamento
diciamo che va bene lo stesso... ::))))
MarioH

 wrote in message
news:9icksa$hrdha$1...@ID-70152.news.dfncis.de...



in parole povere (povere come le mie tasche, quindi scordati pure le poche
lire da me... ::))))) io vorrei un calendario in cui ogni facciata non
rappresenti un mese con i numerini dei giorni incolonnati, bensì un anno con
tanti quadratini quanti sono i 12 mesi ...
tutto qua.
in realta penso che sia cosi semplice che posso farlo pure da solo... però
per principio prima di lavorare io vedo sempre se c'è qualcuno che ha gia
fatto il lavoro per me... sono un ideologo della "pappa bell'e
pronta"...::))))
e ovviamente se me lo faccio da me, mica lo faccio come OCX (che non so
realizzare...). mi creo un quadratino grigio con all'interno 12 pulsantini.
tutto qui... mò vedo se ci riesco...!!
MarioH

 pulsantini.tutto qui... mò vedo se ci riesco...!!
Fatto? Beh, ora facciamo uno sforzo assieme, e lo trasformiamo in un OCX.
Menu Progetto - Inserisci controllo utente - Apri
Ti crea nel progetto un oggetto misterioso di nome Usercontrol1. Rinominalo
subito, (così fa meno paura ;-)) e diciamo che lo chiami "MarioHlendario"
(oggi mi sento spiritoso...)
Prendi tutto il contenuto della tua form (controlli e codice) e copialo
nello usercontrol. Evita però tutto ciò che permette l'uscita dalla tua
vecchia form (se ad esempio hai un pulsante di conferma, non lo inserire
nello usercontrol)
Poniamo che la tua form avesse 2 variabili pubbliche di nome dDataIniziale e
iMese. Nella prima ci inserivi la data da cui partire per visualizzare il
calendario, e la seconda serviva per restituirti il mese alla fine.
Trasformale da Public in Private, poi copia nello usercontrol queste linee
di codice
Public Property Get DataIniziale() As Date
   DataIniziale = dDataIniziale
End Property
Public Property Let DataIniziale(ByVal dtDataIniziale As Date)
   dDataIniziale = dtDataIniziale
   iMese=Month(dtDataIniziale)
  ' Qui di seguito va la chiamata alla tua routine di ridisegno dei mesi
End Property
Public Property Get MeseCorrente() As Integer
   MeseCorrente = iMese
End Property
Ecco fatto. Ora chiudi la finestra dello usercontrol, salva, e ti troverai
nella casella degli strumenti anche un controllo con una strana icona, che
ha come tooltip proprio il nome del tuo controllo.
Ora lo puoi usare come un controllo qualunque. Inseriscilo su di una form,
guardane le proprietà, e noterai che ci trovi tutte le proprietà standard e
anche la proprietà DataIniziale (MeseCorrente no, perchè e readonly).
Il controllo sulla form assumerà nome MarioHlendario1, e potrai accedere
alle sue proprietà da codice nel modo normale.
MarioHlendario1. left = 0
MarioHlendario1.DataIniziale=Now
MsgBox  MarioHlendario1.MeseCorrente
Se fai qualche esperimento, noterai anche che se modifichi la proprietà
DataIniziale dalla finestra delle proprietà, poi salvi, e ricarichi, la
proprietà non verrà salvata. Questo dipende dal fatto che al tuo controllo
manca la gestione della PropertyBag, ma questo sarà oggetto di un'altra
lezione futura... ;-)
Ciao
*Roby*
P.S.
Potrebbe anche darsi che ti ritrovi con qualche errore che non fa funzionare
nulla, soprattutto se hai utilizzato alcune funzionalità che sono
direttamente accessibili nelle form, mentre negli usercontrol necessitano di
passare attraverso il metodo Extender. Se capita dillo, che risolviamo anche
questo problema.


ehh??!!??!!??!!??!!
ma perchè... è così bellino come l'ho fatto io... !!!!!!!
poi tieni conto che io non so niente di property get e let... e tantomeno ho
mai sentito un tizio di nome "extender".... ::))))
in realta questo "controllino" è un normalissimo for con dei tastini sopra
che si attivano/disattivano quando li clicko (e solo uno puo essere
attivato).
questo form viene visualizzato quando clicko su un combobox, si posiziona
sotto il combobox.
quindi scelgo il mese, e con un paio di freccettine scelgo l'anno...
come trasmetto la scelta al form principale? semplice. quando clicko al di
fuori del form-calendario, lui "legge" le informazioni salvate nel
calendario, e le va a mettere nel combo.
quindi se io clicko su "Mag" e scelto l'anno 1998, lui fa piu o meno cosi
combo2.clear
combo2.additem (e qui ci mette "Mag" + "1998")
combo2.listindex=0
unload calendario
set calendario=nothing
piu semplice di cosi??!! e tu mi vuoi portare per le strade impervie degli
ocx e degli usercontrol??????!!!! no grazie... ::))))))))))))
MarioH
ps: quando ho finito il prog magari te lo mando, cosi vedi che schifezza è
venuta fuori... ::))))

 venuta fuori... ::))))
Lo guarderò solo se sarà diventato un OCX. :-)
Ciao
*Roby*


no comment...
mi da molta piu soddisfazione un cheesburger doppio con taaaaaanta
maionese... ::))))
e poi in questo momento gli OCX sono l'ultimo dei miei prblemi.
in questo prog che sto facendo mi sono incartato su una cosa banalissima che
non riesco a risolvere... anzi... se ti capita di leggere il mio thread
"urgente su campo memo" del 14/07... fammi un fischio... ::))))
ciao
MarioH

 tutto qui... mò vedo se ci riesco...!!
Fatto? Beh, ora facciamo uno sforzo assieme, e lo trasformiamo in un OCX.
Menu Progetto - Inserisci controllo utente - Apri
Ti crea nel progetto un oggetto misterioso di nome Usercontrol1. Rinominalo
subito, (così fa meno paura ;-)) e diciamo che lo chiami "MarioHlendario"
(oggi mi sento spiritoso...)
Prendi tutto il contenuto della tua form (controlli e codice) e copialo
nello usercontrol. Evita però tutto ciò che permette l'uscita dalla tua
vecchia form (se ad esempio hai un pulsante di conferma, non lo inserire
nello usercontrol)
Poniamo che la tua form avesse 2 variabili pubbliche di nome dDataIniziale a
