Differenze tra le versioni di "Ottenere una simil-ProgressBar da una LCDLabel"
(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...") |
|||
(6 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 | + | 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 | + | 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 | + | 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 | ||
Private obs As Observer | Private obs As Observer | ||
− | + | 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 | |
− | + | Public Sub obs_Draw() | |
With Paint | With Paint | ||
Riga 37: | Riga 38: | ||
End With | End With | ||
− | + | End | |
− | + | Public Sub LCDLabel1_MouseMove() | |
Print (Mouse.X / LCDLabel1.W) * 100 | Print (Mouse.X / LCDLabel1.W) * 100 | ||
Riga 47: | Riga 48: | ||
If LCDLabel1.Value < 0 Then LCDLabel1.Value = 0 | If LCDLabel1.Value < 0 Then LCDLabel1.Value = 0 | ||
− | + | End | |
+ | |||
− | + | Public Sub LCDLabel1_MouseDown() | |
LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100) | LCDLabel1.Value = Fix((Mouse.X / LCDLabel1.W) * 100) | ||
− | + | End |
Versione attuale delle 14: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