Differenze tra le versioni di "Creare uno pseudo-slider"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Mostriamo di seguito un possibile codice per creare graficamente una sorta di ''slider'': Private pn As Panel Private PictureBox1 As PictureBox <FONT Color=gray>' ''Valore...") |
|||
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 9: | Riga 9: | ||
<FONT Color=gray>' ''Imposta la posizione Y in verticale della PictureBox e del valore massimo dello Slider:''</font> | <FONT Color=gray>' ''Imposta la posizione Y in verticale della PictureBox e del valore massimo dello Slider:''</font> | ||
Private Const ALTERA As Short = 40 | Private Const ALTERA As Short = 40 | ||
− | <FONT Color=gray>' ''Imposta l'ambitus della posizione dei valori dello Slider: i valori rappresentabili sono disposti | + | <FONT Color=gray>' ''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.''</font> | ' ''La coordinata "Y" data dalla somma "ALTERA + AMBITUS" rappresenta la posizione del valore minimo assunto dallo Slider.''</font> | ||
Private Const AMBITUS As Short = 159 | Private Const AMBITUS As Short = 159 | ||
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) | ||
− | |||
− | |||
− | |||
− | + | ||
+ | Public Sub _new() | ||
With pn = New Panel(Me) As "Panel1" | With pn = New Panel(Me) As "Panel1" | ||
Riga 38: | Riga 36: | ||
End With | End With | ||
− | + | Me.Title = "Valore = 0" | |
− | + | 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 55: | Riga 49: | ||
.Move(.X, pmy) | .Move(.X, pmy) | ||
<FONT Color=gray>' ''Valore corrente assunto dallo "Slider":''</font> | <FONT Color=gray>' ''Valore corrente assunto dallo "Slider":''</font> | ||
− | + | Me.Title = "Valore = " & Abs(Fix((PictureBox1.Y - ALTERA) / rapp) - MAXIMUM) | |
− | |||
End With | End With | ||
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 attuale delle 15:18, 16 ott 2024
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) 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 Me.Title = "Valore = 0" 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": Me.Title = "Valore = " & Abs(Fix((PictureBox1.Y - ALTERA) / rapp) - MAXIMUM) End With Endif End
Ovviamente con le opportune modifiche e integrazioni tale codice può essere trasformato in una specifica Classe.