non un vero e proprio componente, una sub veloce per fare questo comodo inserimento.
Per ora ho fatto cosi':
' Gambas class file
Public WeekButton As New ToggleButton[7] 'vettore dei bottoni di validita' settimanale
Public Sub SetInterface()
Dim i As Integer
Dim Bottone As ToggleButton
Dim GiorniDellaSettimana As String[] = Split("lunedì martedì mercoledì giovedì venerdì sabato domenica", " ")
'creazione bottoni weekday
WeekButton = New ToggleButton[7]
For i = 0 To 6
With bottone = New ToggleButton(Frame_Strategy) As "Tasto"
.Text = GiorniDellaSettimana[i]
.Width = 70
.Height = TextBox_Nome.Height
.Top = TextBox_Nome.Top
.Value = True
If i = 0 Then
bottone.Left = TextBox_Nome.Left + TextBox_Nome.Width + 5
Else
bottone.Left = WeekButton[i - 1].Left + WeekButton[i - 1].Width + 5
Endif
End With
WeekButton[i] = bottone
Next
end
ma come e' evidente e' tutto un po' hard-coded ....
ho anche aggiunto la gestione dell'evento click per il vettore di oggetti :D
Public Sub tasto_Click()
Dim indice As Integer
indice = WeekButton.find(Last)
If indice = -1 Then Return
WeekButton[indice].Font.Bold = WeekButton[indice].Value
End
Alcuni chiarimenti:
1) questo "Frame_Strategy", che suppongo sia un Oggetto Frame, va posto sul Form ? Voglio dire: chi è il suo Genitore ?
2) circa " Public WeekButton As New ToggleButton[7] ", avendo riutilizzato la parola-chiave "New" nella sotto-procedura, puoi anche evitare di creare quell'array di oggetti ToggleButton qui all'esterno. Puoi scegliere, insomma, come hai fatto appunto con l'oggetto "Bottone".
3) circa " Dim GiorniDellaSettimana As String[] = Split("lunedì martedì mercoledì giovedì venerdì sabato domenica", " ") ", ma... perché non effettui più semplicemente una dichiarazione esplicita e diretta dell'array ? ??? Ossia:
Dim GiorniDellaSettimana As String[] = ["lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica"]
:-\
Scusa ma sto per uscire e potrò rivedere la cosa domani, ma tanto per capirci tu vorresti qualcosa di simile? Che facesse cosa?
' Gambas class file
Private $sGiorni As String[] = ["Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"]
Private $sDay As String[] = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
Private $sWeek As String[]
Public Sub Form_Open()
If System.Language = "it_IT.UTF-8" Then
$sWeek = $sGiorni
Else
$sWeek = $sDay
Endif
SpinBox1.Value = 1
End
Public Sub SpinBox1_Change()
' simula ciò che decide il n. giorno
If SpinBox1.Value = 0 Then SpinBox1.Value = 1
ToggleButton1.Text = $sWeek[SpinBox1.Value - 1]
End
Public Sub ToggleButton1_Click()
' Cosa deve fare?
End
PERFETTO gianluigi:
Dim ob As Object
Dim b As Byte
Dim sDaysWeek As String[]
Select Case System.Language
Case "en_US.UTF-8", "he_IL.UTF-8"
sDaysWeek = [("Sunday"), ("Monday"), ("Tuesday"), ("Wednesday"), ("Thursday"), ("Friday"), ("Saturday")]
Case "ar_SA.UTF-8"
sDaysWeek = [("Saturday"), ("Sunday"), ("Monday"), ("Tuesday"), ("Wednesday"), ("Thursday"), ("Friday")]
Case Else
sDaysWeek = [("Monday"), ("Tuesday"), ("Wednesday"), ("Thursday"), ("Friday"), ("Saturday"), ("Sunday")]
End Select
For Each ob In ToolBar1.Children
If Object.Type(ob) = "ToggleButton" Then
Inc b
If ob.Name = "ToggleButton" & b Then
ob.Text = sDaysWeek[b - 1]
ob.Value = True
Endif
Endif
Next
il tuo codice mi sembra molto bello e completo :D