Creare uno pseudo-slider: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 17: | Riga 17: | ||
<FONT Color=gray>' ''Calcola il rapporto fra le due grandezze:''</font> | <FONT Color=gray>' ''Calcola il rapporto fra le due grandezze:''</font> | ||
Private rapp As Single = (AMBITUS + 1) / (MAXIMUM + 1) | Private rapp As Single = (AMBITUS + 1) / (MAXIMUM + 1) | ||
Private valore As Short | Private valore As Short | ||
Public Sub _new() | |||
With pn = New Panel(Me) As "Panel1" | With pn = New Panel(Me) As "Panel1" | ||
| Riga 38: | Riga 37: | ||
End With | End With | ||
End | |||
Public Sub PictureBox1_MouseMove() | |||
Dim pmy As Short = PictureBox1.Y + Mouse.Y - | Dim pmy As Short = PictureBox1.Y + Mouse.Y - Mouse.StartY | ||
If (pmy > (ALTERA - 1)) And (pmy < (ALTERA + AMBITUS + 1)) Then | If (pmy > (ALTERA - 1)) And (pmy < (ALTERA + AMBITUS + 1)) Then | ||
| Riga 60: | Riga 52: | ||
Endif | Endif | ||
End | |||
Ovviamente con le opportune modifiche e integrazioni tale codice può essere trasformato in una specifica ''Classe''. | Ovviamente con le opportune modifiche e integrazioni tale codice può essere trasformato in una specifica ''Classe''. | ||
Versione delle 11:24, 13 giu 2023
Mostriamo di seguito un possibile codice per creare graficamente una sorta di slider:
Private pn As Panel
Private PictureBox1 As PictureBox
' Valore minimo che lo Slider può assumere:
Private Const MINIMUM As Short = 0
' Valore massimo che lo Slider può assumere.
' La "quantità" di valori rappresentabili dallo "Slider" è data da "(MAXIMUM - MINIMUM) + 1".
Private Const MAXIMUM As Short = 100
' Imposta la posizione Y in verticale della PictureBox e del valore massimo dello Slider:
Private Const ALTERA As Short = 40
' Imposta l'ambitus della posizione dei valori dello Slider: i valori rappresentabili sono disposti nell'area di dimensione in verticale uguale alla somma "ALTERA" (massimo valore) + "AMBITUS".
' La coordinata "Y" data dalla somma "ALTERA + AMBITUS" rappresenta la posizione del valore minimo assunto dallo Slider.
Private Const AMBITUS As Short = 159
Private Const PBW As Byte = 24
Private Const PBH As Byte = 32
Private Const PNH As Short = ALTERA * 2 + AMBITUS + PBH
' Calcola il rapporto fra le due grandezze:
Private rapp As Single = (AMBITUS + 1) / (MAXIMUM + 1)
Private valore As Short
Public Sub _new()
With pn = New Panel(Me) As "Panel1"
.W = PBW * 3
.H = PNH
.X = (Me.W / 2) - (.W / 2)
.Y = 50
.Background = Color.SoftYellow
End With
With PictureBox1 = New PictureBox(pn) As "PictureBox1"
.W = PBW
.H = PBH
.X = (pn.W / 2) - (.W / 2)
.Y = PNH - ALTERA - PBH
.Background = Color.Red
End With
End
Public Sub PictureBox1_MouseMove()
Dim pmy As Short = PictureBox1.Y + Mouse.Y - Mouse.StartY
If (pmy > (ALTERA - 1)) And (pmy < (ALTERA + AMBITUS + 1)) Then
With PictureBox1
.Move(.X, pmy)
' Valore corrente assunto dallo "Slider":
valore = Abs(Fix((PictureBox1.Y - ALTERA) / rapp) - MAXIMUM)
Print "Valore = "; valore
End With
Endif
End
Ovviamente con le opportune modifiche e integrazioni tale codice può essere trasformato in una specifica Classe.