Newsgroup: it.comp.lang.visual-basic
Titolo: calendario VB

Ciao, spero ch stavolta il mio problema venga pubblicato dato che gli
altri nn so che fine abbiano fatto.
Mi servirebbe sapere se è possibile in VB realizzare un calendario
annuale tipo quello che già esiste (monthview) con la fuzionalità che
leggendo delle date da db queste vengano colorate.
Ho provato a fare io una cosa del genere con monthview ma essendo
dinamico rimane colorata solo l'ultima data che legge dal db ovvero
l'utimo recordset.
Come fare a colorare tutte le date presenti nei recordset?
Grazie in anticipo
Alex

 ha scritto

per provare mi ero divertito un po' con una flexgrid.
non so se con una griglia bound puoi settare lo sfondo.
comunque, il codice per la flex e' +- quello qui sotto.
abbondantemente migliorabile, cmq va, neanche troppo lento.
il giorno corrente e' in rosso, le feste ita in verde pisello.
-- 
hth, ciao, j.
http://www.sundaysw.com
Private Sub YearCalc(y As Long)
    bCaption = False
    Dim j As Long, jj As Long, jjj As Long
    With grid
        .Visible = False
        .Clear
        .FixedRows = 1
        .FixedCols = 1
        .Rows = 13
        .Cols = 38
        .ColWidth(0) = 450
        For j = 1 To 37
            .ColWidth(j) = 270
        Next
        .TextMatrix(1, 0) = ma(1)
        .TextMatrix(2, 0) = ma(2)
        .TextMatrix(3, 0) = ma(3)
        .TextMatrix(4, 0) = ma(4)
        .TextMatrix(5, 0) = ma(5)
        .TextMatrix(6, 0) = ma(6)
        .TextMatrix(7, 0) = ma(7)
        .TextMatrix(8, 0) = ma(8)
        .TextMatrix(9, 0) = ma(9)
        .TextMatrix(10, 0) = ma(10)
        .TextMatrix(11, 0) = ma(11)
        .TextMatrix(12, 0) = ma(12)
            Dim lap As Long: lap = 0
            For jj = 1 To 6 'weeks
                For j = 1 To 7 'day
                    If j + lap > 37 Then Exit For
                    .TextMatrix(0, j + lap) = da(j)
                Next
                lap = lap + 7
            Next
        Dim m As Long, startCol As Long
        For m = 1 To 12
            For j = 1 To 37
                If (m Mod 2 = 0) Then
                    With grid
                            .Row = m
                            .Col = j
                        .CellBackColor = &HE0E0E0
                    End With
                End If
            Next
            startCol = Weekday("1-" & CStr(m) & "-" & CStr(y))
            For j = 1 To 31
                Dim s As String
                s = CStr(j) & "-" & CStr(m) & "-" & CStr(y)
                If IsDate(s) Then
                    If Weekday(s) = 1 Then
                        With grid
                            .Row = m
                            .Col = (j + startCol) - 1
                            .CellBackColor = vbYellow
                        End With
                    End If
                    If Not bEng And ( _
                            (j = 1 And m = 1) Or _
                            (j = 6 And m = 1) Or _
                            (j = 31 And m = 1) Or _
                            (j = 25 And m = 4) Or _
                            (j = 1 And m = 5) Or _
                            (j = 2 And m = 6) Or _
                            (j = 15 And m = 8) Or _
                            (j = 1 And m = 11) Or _
                            (j = 8 And m = 12) Or _
                            (j = 25 And m = 12) Or _
                            (j = 26 And m = 12) _
                            ) Then
                        With grid
                            .Row = m
                            .Col = (j + startCol) - 1
                            .CellBackColor = vbGreen
                        End With
                    End If
                    If j = Day(Pasqua(CInt(y))) And m =
Month(Pasqua(CInt(y))) Then
                        With grid
                            .Row = m
                            .Col = (j + startCol) - 1
                            .CellBackColor = vbCyan
                        End With
                    End If
                    Dim Pasquetta As Date
                    Pasquetta = Pasqua(CInt(y)) + 1
                    If j = Day(Pasquetta) And m = Month(Pasquetta) Then
                        With grid
                            .Row = m
                            .Col = (j + startCol) - 1
                            .CellBackColor = vbCyan
                        End With
                    End If
                    If CDate(s) = Date Then
                        With grid
                            .Row = m
                            .Col = (j + startCol) - 1
                            .CellBackColor = vbRed
                        End With
                    End If
                    .TextMatrix(m, (j + startCol) - 1) = j
                End If
            Next
        Next
        .Visible = True
    End With
        maxW = (37 * 270) + 450
        maxH = grid.RowHeight(0) * 13
    bCaption = True
End Sub

 il giorno corrente e' in rosso, le feste ita in verde pisello.
e se il giorno corrente fosse festivo?
:-)
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 :-)
les jeux sont faits, vince il rosso. e non menarmela col criptocomunismo :)
mi ero dimenticato le domeniche gialle e pasqua/etta azzurre.
qui sotto, il primo e' il vb, il secondo l'html esportato:
http://www.sundaysw.com/tmp/vbcalendar.png
http://www.sundaysw.com/tmp/2004i.html
chissa' come mai l'icona e' un ponte :)
ciao, a.
rigrazie per la bella domenica.

...

grazie per la tua risposta proverò subito il codice che mi hai postato.
sei la prima persona che mi risponde sono felice!!!
Ciao
Alex

 sei la prima persona che mi risponde sono felice!!!
javalab è notoriamente un ragazzo molto simpatico.
approfitterò del tuo positivo stato d'animo per informarti del fatto che,
quando si risponde ad un post, potrebbe essere il caso di non riportarlo
integralmente.
spero di non essere stato eccessivamente antipatico :-)
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:2dc59176.04110...@posting.google.com

sul 
www.it-lang-vb.net
 dovrebbe esserci il sorgente del controllo calendario
di GBC
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
"Seminate Linux, che Windows si pianta da sè...." (Antico Adagio)
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.nicolaottomano.it/public/SinapsiAntispam-Setup.exe
email spamtrap: 
spam...@nicolaottomano.it

 Ciao e grazie anche per le risposte
si', va bene :)
anche melchiade ecc ecc ecc ecc e' un ragazzo simpatico (anzi, *lui* e' un
ragazzo. io modestamente lo fui :) e aiuta spesso, ti stava solo dando una
dritta per il futuro. in genere ci si limita a citare le parti essenziali
alla risposta, per non intasare la lettura e la banda.
gia' che ci siamo, visto che sei nuova al ng (benvenuta/o), se ti
capiteranno problemi col codice, non dire " mi da' errore" e basta. posta la
parte del codice che ti da' problemi e specifica l'errore che ricevi.
comunque direi che le regole e linee guida per postare le trovi nel
manifesto del ng che h.p.l. posta regolarmente.
ciao, j.

 Grazie Alex
scusa, mi ero dimenticato.
nella sezione general del codice del form, da me c'e':
Dim maxW As Long, maxH As Long
Dim bEng As Boolean, bCaption As Boolean
Dim da() As String, ma() As String
sono due matrici che mi servono qua e la'.
pero' tieni presente che io uso molto la programmazione strutturata e le
variabili pubbliche, che mi dicono non essere un gran bel sistema. magari
prova a limitare i due dim all'inizio della sub che usi.
se vai in tilt (puo' essere, hai scelto una cosa mica tanto immediata), un
mio indirizzo buono e' in homepage. scrivi che ti mando il vbp :)
