super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
Salve sto facendo un programma che utilizza il controllo calendario microsoft 11.0(mscal.ocx) ho fatto un timer con questo codice:
Codice sorgente - presumibilmente VB.NET |
If Calendar1.Month = 1 Then Text31.Visible = True End If If Calendar1.Month = 2 And Calendar1.Year = 2008 or 2012 or 2016 or 2020 Then Text30.Visible = False Text31.Visible = False Else: If Calendar1.Month = 2 And Calendar1.Year <> 2008 Or 20012 Or 2016 Or 2020 Then Text29.Visible = False Text30.Visible = False Text31.Visible = False End If End If If Calendar1.Month = "3" Then Text31.Visible = True End If If Calendar1.Month = "5" Then Text31.Visible = True End If If Calendar1.Month = "7" Then Text31.Visible = True End If If Calendar1.Month = "8" Then Text31.Visible = True End If If Calendar1.Month = "10" Then Text31.Visible = True End If If Calendar1.Month = "12" Then Text31.Visible = True End If
|
Però non funziona... che cosa ho sbagliato??
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
spiga anche cosa intendi ottenere con questo codice e cosa non funziona
cmq una if come questa
Codice sorgente - presumibilmente Delphi |
If Calendar1.Month = 2 And Calendar1.Year = 2008 Or 2012 Or 2016 Or 2020 Then
|
non esiste, non cè nessun confronto in: Or 2012 Or 2016 Or 2020
confronti un numero con niente, devi usare sempre questa sintassi: if a=b ... then
|
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
ok userò la sintassi che mi hai consigliato. Quello che vorrei è che quando clicco sul mese di gennaio ad esempio la text31 sia visibile ecc... capito cosa intendo?? Grazie!!
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
allora ti consiglio di usare una matrice di textbox x ridurre il codice
inoltre non è necessario usare un timer, il controllo calendar suporto l' evento change, uso quello che è adatto a cio che devi fare e riduce il lavoro sulla CPU
|
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
Le textbox mi servono tutte perchè li devo eseguire altre operazioni. cmq se metto il codice che avevo nel timer (modificando la sintassi di quella parte sbagliata) nell'evento change del calendario funziona?? Grazie!!
EDIT:
L'evento change nel calendario non c'è, però c'è newmonth. cmq ho messo in un command questo codice:
Codice sorgente - presumibilmente Plain Text |
il valore che mi restituise è sempre 0 fin quando non clicco su un giorno del calendario. come posso fare??
Ultima modifica effettuata da super rambo il 10/09/2008 alle 15:03 |
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
ti da sempre 0 perchè non hai selezionato nessun giorno dell' anno, quindi o ne selezioni uno oppure dovresti risolvere il problema con calendar.today
non ricordo se è giusto today, cmq è un comando che ti porta direttamente al giorno impostato sul calendario di sistema, quindi dovrebbe selezionarlo
riguardo all' evento change, se non cè prova con click; cmq dovrebbe essere l' evento di default quando fai doppioclick sul controllo calendar
non posso darti informazioni sicure, perchè non trovo + mscal.ocx e sinceramento non ho voglia di smanettare per inserirlo
|
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
l'evento del doppio click del calendario è click e se imposto la proprietà day funziona solo per il mese corrente quindi se cambio mese restituisce 0 perchè non seleziona un giorno del nuovo mese.. possibile che non ci sia una soluzione?? Grazie!!
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
prima di:
text=calendar.month
metti:
calendar.day=day(date)
|
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
funziona sempre solo per un mese
|
|