Differenze tra le versioni di "Creare uno pseudo-slider"

Da Gambas-it.org - Wikipedia.
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 x As Short
 
Private y As Short
 
 
  Private valore As Short
 
  Private valore As Short
 
   
 
   
  '''Public''' Sub _new()
+
   
 +
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'''
+
  End
 
'''Public''' Sub PictureBox1_MouseDown()
 
 
  x = Mouse.X
 
  y = Mouse.Y
 
 
 
'''End'''
 
 
   
 
   
  '''Public''' Sub PictureBox1_MouseMove()
+
  Public Sub PictureBox1_MouseMove()
 
   
 
   
   Dim pmy As Short = PictureBox1.Y + Mouse.Y - 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'''
+
  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 10: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.