Ottenere una simil-ProgressBar da una LCDLabel: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con "Poiché un oggetto ''LCDLabel'' è composto anche da una ''DrawingArea'', questa assume la proprietà di figlia (''.Children'') del predetto oggetto ''LCDLabel''. La ''Drawing...")
 
Nessun oggetto della modifica
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Poiché un oggetto ''LCDLabel'' è composto anche da una ''DrawingArea'', questa assume la proprietà di figlia (''.Children'') del predetto oggetto ''LCDLabel''. La ''DrawingArea'', in quanto figlia del predetto oggetto ''LCDLabel'', conserva una sua autonomia che può essere utilizzata per modificare le sue proprietà, potendo così inserire al suo interno, ad esempio, un testo e/o un'immagine e/o una figura geometrica.
Poiché un oggetto ''LCDLabel'' è composto anche da una ''DrawingArea'', questa assume la Proprietà di figlia (".Children") del predetto Oggetto ''LCDLabel''.
<BR>La ''DrawingArea'', in quanto figlia del predetto oggetto ''LCDLabel'', conserva una sua autonomia che può essere utilizzata per modificare le sue proprietà, potendo così inserire al suo interno, ad esempio, un testo e/o un'immagine e/o una figura geometrica.


Per fare ciò bisognerà individuare tale ''DrawingArea'' richiamandola con la proprietà ''.Children[n]'' del suo oggetto ''LCDLabel'' genitore. L'inserimento della scritta e/o dell'immagine e/o una figura geometrica nella ''DrawingArea'' avverrà mediante la consueta procedura con l'uso della Classe ''Paint'' che si svolgerà all'interno di una sub-routine appartenente all'evento ''_Draw()'' della ''DrawingArea''.
Per fare ciò bisognerà individuare tale ''DrawingArea'' richiamandola con la Proprietà ".Children[n]" del suo oggetto ''LCDLabel'' genitore.
<BR>L'inserimento della scritta e/o dell'immagine e/o una figura geometrica nella ''DrawingArea'' avverrà mediante la consueta procedura con l'uso della Classe ''Paint'' che si svolgerà all'interno di una sub-routine appartenente all'Evento "_Draw()" della ''DrawingArea''.


Affinché tale evento possa essere sollevato si assegnerà la ''DrawingArea'', figlia del predetto oggetto ''LCDLabel'' ad un Gruppo attraverso la Classe ''Observer()''.
Affinché tale Evento possa essere sollevato si assegnerà la ''DrawingArea'' (Figlia del predetto oggetto ''LCDLabel'') ad un Gruppo attraverso la Classe ''Observer''.


 
In questo modo un Oggetto ''LCDLabel'' potrà essere modificato adeguatamente e assumendo così anche l'aspetto e le funzioni di una ''ProgressBar'':
In questo modo un oggetto ''LCDLabel'' potrà essere modificato adeguatamente e assumendo così anche l'aspetto e le funzioni di una ''ProgressBar'':
  Private obs As Observer
  Private obs As Observer
   
   
   
   
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
   
   
   With LCDLabel1
   With LCDLabel1
     Print Object.Type(.Children[0])
     Print Object.Type(<FONT Color=red>.Children[0]</font>)
     .Border = True
     .Border = True
     .Alignment = Align.Center
     .Alignment = Align.Center
     .Padding = 12
     .Padding = 12
     .Value = 0.0
     .Value = 0.0
     obs = New Observer(.Children[0]) As "obs"
     obs = New Observer(<FONT Color=red>.Children[0]</font>) As "obs"
  End With
  End With
   
   
  '''End'''
  End
   
   
   
   
  '''Public''' Sub obs_Draw()
  Public Sub obs_Draw()
   
   
   With Paint
   With Paint
Riga 37: Riga 38:
   End With
   End With
    
    
  '''End'''
  End
   
   
Public Sub LCDLabel1_MouseMove()
   
   
'''Public''' Sub LCDLabel1_MouseMove()
 
   Print (Mouse.X / LCDLabel1.W) * 100
   Print (Mouse.X / LCDLabel1.W) * 100
   LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
   LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
   If LCDLabel1.Value > 100 Then LCDLabel1.Value = 100
   LCDLabel1.Value = Clamp(LCDLabel1.Value, 0, 100)
  If LCDLabel1.Value < 0 Then LCDLabel1.Value = 0
 
  End
  '''End'''
   
   
  '''Public''' Sub LCDLabel1_MouseDown()
  Public Sub LCDLabel1_MouseDown()
    
    
   LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
   LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
    
    
  '''End'''
  End

Versione attuale delle 11:40, 11 apr 2025

Poiché un oggetto LCDLabel è composto anche da una DrawingArea, questa assume la Proprietà di figlia (".Children") del predetto Oggetto LCDLabel.
La DrawingArea, in quanto figlia del predetto oggetto LCDLabel, conserva una sua autonomia che può essere utilizzata per modificare le sue proprietà, potendo così inserire al suo interno, ad esempio, un testo e/o un'immagine e/o una figura geometrica.

Per fare ciò bisognerà individuare tale DrawingArea richiamandola con la Proprietà ".Children[n]" del suo oggetto LCDLabel genitore.
L'inserimento della scritta e/o dell'immagine e/o una figura geometrica nella DrawingArea avverrà mediante la consueta procedura con l'uso della Classe Paint che si svolgerà all'interno di una sub-routine appartenente all'Evento "_Draw()" della DrawingArea.

Affinché tale Evento possa essere sollevato si assegnerà la DrawingArea (Figlia del predetto oggetto LCDLabel) ad un Gruppo attraverso la Classe Observer.

In questo modo un Oggetto LCDLabel potrà essere modificato adeguatamente e assumendo così anche l'aspetto e le funzioni di una ProgressBar:

Private obs As Observer


Public Sub Form_Open()

  With LCDLabel1
    Print Object.Type(.Children[0])
    .Border = True
    .Alignment = Align.Center
    .Padding = 12
    .Value = 0.0
    obs = New Observer(.Children[0]) As "obs"
  End With

End


Public Sub obs_Draw()

  With Paint
    .Begin(LCDLabel1.Children[0])
' Disegnamo all'interno della "DrawingArea" della "LCDLabel" un rettangolo pieno:
    .FillRect(0, 4, LCDLabel1.W * (LCDLabel1.Value / 100), LCDLabel1.H - 8, Color.red)
' ...nonché del testo:
    .Font.Size = 6
    .Brush = .Color(Color.Blue)
    .DrawRichText("testo", LCDLabel1.W - 25, 4, 25, 10)
    .End
  End With
  
End


Public Sub LCDLabel1_MouseMove()

  Print (Mouse.X / LCDLabel1.W) * 100
  LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
  LCDLabel1.Value = Clamp(LCDLabel1.Value, 0, 100)

End


Public Sub LCDLabel1_MouseDown()
 
  LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
 
End