mirror of
https://github.com/FellippeHeitor/InForm.git
synced 2025-01-15 03:49:56 +00:00
Allows multiline captions in ProgressBar controls (\n)
This commit is contained in:
parent
6a02f7fc49
commit
49cf357144
1 changed files with 47 additions and 9 deletions
|
@ -7557,7 +7557,7 @@ END SUB
|
||||||
'---------------------------------------------------------------------------------
|
'---------------------------------------------------------------------------------
|
||||||
SUB __UI_DrawProgressBar (This AS __UI_ControlTYPE, ControlState)
|
SUB __UI_DrawProgressBar (This AS __UI_ControlTYPE, ControlState)
|
||||||
DIM PrevDest AS LONG, Temp&
|
DIM PrevDest AS LONG, Temp&
|
||||||
DIM TempCaption$
|
DIM TempCaption$, TempLine$
|
||||||
|
|
||||||
STATIC ControlImage_Track AS LONG, ControlImage_Chunk AS LONG
|
STATIC ControlImage_Track AS LONG, ControlImage_Chunk AS LONG
|
||||||
|
|
||||||
|
@ -7613,15 +7613,11 @@ SUB __UI_DrawProgressBar (This AS __UI_ControlTYPE, ControlState)
|
||||||
_PUTIMAGE (4, 3)-STEP(((This.Width - 9) / This.Max) * This.Value, This.Height - 7), ControlImage_Chunk
|
_PUTIMAGE (4, 3)-STEP(((This.Width - 9) / This.Max) * This.Value, This.Height - 7), ControlImage_Chunk
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF This.ShowPercentage AND LEN(Caption(This.ID)) > 0 THEN
|
IF This.ShowPercentage THEN
|
||||||
DIM ProgressString$, ReplaceCode%
|
DIM ProgressString$, ReplaceCode%
|
||||||
ProgressString$ = LTRIM$(STR$(FIX((This.Value / This.Max) * 100))) + "%"
|
ProgressString$ = LTRIM$(STR$(FIX((This.Value / This.Max) * 100))) + "%"
|
||||||
IF LEN(Caption(This.ID)) THEN
|
IF LEN(Caption(This.ID)) THEN
|
||||||
TempCaption$ = __UI_TrimAt0$(Caption(This.ID))
|
TempCaption$ = Replace$(Caption(This.ID), "\#", ProgressString$, 0, 0)
|
||||||
ReplaceCode% = INSTR(TempCaption$, "\#")
|
|
||||||
IF ReplaceCode% THEN
|
|
||||||
TempCaption$ = LEFT$(TempCaption$, ReplaceCode% - 1) + ProgressString$ + MID$(TempCaption$, ReplaceCode% + 2)
|
|
||||||
END IF
|
|
||||||
ELSE
|
ELSE
|
||||||
TempCaption$ = ProgressString$
|
TempCaption$ = ProgressString$
|
||||||
END IF
|
END IF
|
||||||
|
@ -7632,8 +7628,50 @@ SUB __UI_DrawProgressBar (This AS __UI_ControlTYPE, ControlState)
|
||||||
COLOR Darken(Control(__UI_FormID).BackColor, 70)
|
COLOR Darken(Control(__UI_FormID).BackColor, 70)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
Temp& = __UI_PrintWidth(TempCaption$)
|
'Caption:
|
||||||
__UI_PrintString This.Width \ 2 - Temp& \ 2, This.Height \ 2 - uspacing& \ 2 + 1, TempCaption$
|
DIM CaptionLeft AS INTEGER, FindLF&, FindSep&, ThisLine%
|
||||||
|
DIM CaptionLeftFirstLine AS INTEGER, CaptionTopFirstLine AS INTEGER, TextTop%
|
||||||
|
DIM TotalLines AS INTEGER
|
||||||
|
IF INSTR(TempCaption$, CHR$(10)) > 0 THEN
|
||||||
|
TempCaption$ = __UI_TrimAt0$(__UI_WordWrap(TempCaption$, This.Width - ((__UI_DefaultCaptionIndent) * 2), 0, TotalLines))
|
||||||
|
DO WHILE LEN(TempCaption$)
|
||||||
|
ThisLine% = ThisLine% + 1
|
||||||
|
|
||||||
|
IF TotalLines < This.Height \ uspacing& THEN
|
||||||
|
'Center vertically if less lines than fits the box
|
||||||
|
TextTop% = (This.Height \ 2) - ((TotalLines * uspacing& - uspacing&) \ 2) - uspacing& \ 2 + (((ThisLine%) * uspacing& - uspacing&))
|
||||||
|
ELSE
|
||||||
|
'Snap to top of the label's boundaries
|
||||||
|
'if there are more lines than meet the eye
|
||||||
|
TextTop% = __UI_DefaultCaptionIndent + ThisLine% * uspacing& - uspacing&
|
||||||
|
END IF
|
||||||
|
|
||||||
|
FindSep& = INSTR(TempCaption$, CHR$(1)) 'Search for soft breaks
|
||||||
|
FindLF& = INSTR(TempCaption$, CHR$(10)) 'Search for hard breaks
|
||||||
|
IF (FindSep& > 0 AND FindLF& > 0 AND FindSep& < FindLF&) OR (FindSep& > 0 AND FindLF& = 0) THEN
|
||||||
|
TempLine$ = LEFT$(TempCaption$, FindSep& - 1)
|
||||||
|
TempCaption$ = MID$(TempCaption$, FindSep& + 1)
|
||||||
|
ELSEIF FindSep& = 0 THEN
|
||||||
|
IF FindLF& > 0 THEN
|
||||||
|
TempLine$ = LEFT$(TempCaption$, FindLF& - 1)
|
||||||
|
TempCaption$ = MID$(TempCaption$, FindLF& + 1)
|
||||||
|
ELSE
|
||||||
|
TempLine$ = TempCaption$
|
||||||
|
TempCaption$ = ""
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
CaptionLeft = (This.Width \ 2 - __UI_PrintWidth&(TempLine$) \ 2)
|
||||||
|
__UI_PrintString CaptionLeft, TextTop%, TempLine$
|
||||||
|
|
||||||
|
IF ThisLine% = 1 THEN CaptionLeftFirstLine = CaptionLeft: CaptionTopFirstLine = TextTop%
|
||||||
|
LOOP
|
||||||
|
ELSE
|
||||||
|
TextTop% = __UI_DefaultCaptionIndent
|
||||||
|
CaptionLeft = (This.Width \ 2 - __UI_PrintWidth&(TempCaption$) \ 2)
|
||||||
|
CaptionLeftFirstLine = CaptionLeft
|
||||||
|
__UI_PrintString CaptionLeft, TextTop%, TempCaption$
|
||||||
|
END IF
|
||||||
END IF
|
END IF
|
||||||
'------
|
'------
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue