Ottenere una simil-ProgressBar da una LCDLabel: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 14: | Riga 14: | ||
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 | ||
Versione delle 15:40, 3 set 2024
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)
If LCDLabel1.Value > 100 Then LCDLabel1.Value = 100
If LCDLabel1.Value < 0 Then LCDLabel1.Value = 0
End
Public Sub LCDLabel1_MouseDown()
LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100)
End