1
1
Fork 0
mirror of https://github.com/FellippeHeitor/InForm.git synced 2025-01-14 19:49:33 +00:00

Fixes conversion from MenuBar to ContextMenu and vice versa.

This commit is contained in:
FellippeHeitor 2018-09-04 01:09:14 -03:00
parent ec2184f2c5
commit ddd062df54
2 changed files with 64 additions and 45 deletions

View file

@ -285,6 +285,8 @@ __UI_Type(__UI_Type_TrackBar).RestrictResize = __UI_CantResizeV
__UI_Type(__UI_Type_ContextMenu).Name = "ContextMenu"
__UI_Type(__UI_Type_ContextMenu).TurnsInto = __UI_Type_MenuBar
__UI_Type(__UI_Type_ContextMenu).RestrictResize = __UI_CantResize
__UI_Type(__UI_Type_ContextMenu).DefaultWidth = 22
__UI_Type(__UI_Type_ContextMenu).DefaultHeight = 22
__UI_Type(__UI_Type_Font).Name = "Font"
@ -4480,6 +4482,43 @@ FUNCTION SetFont& (__NewFontFile AS STRING, NewFontSize AS INTEGER)
END IF
END FUNCTION
'---------------------------------------------------------------------------------
SUB __UI_AdjustNewMenuBarTopHeight (NextSlot AS LONG)
DIM TempCanvas AS LONG, PrevDest AS LONG
IF _PIXELSIZE = 0 THEN
'Temporarily create a 32bit screen for proper font handling, in case
'we're still at form setup (SCREEN 0)
TempCanvas = _NEWIMAGE(10, 10, 32)
PrevDest = _DEST
_DEST TempCanvas
END IF
IF Control(__UI_FormID).Font THEN _FONT Control(__UI_FormID).Font
Control(NextSlot).Height = falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5
Control(NextSlot).Top = 0
IF TempCanvas <> 0 THEN
_DEST PrevDest
_FREEIMAGE TempCanvas
END IF
IF __UI_HasMenuBar = False THEN
__UI_HasMenuBar = True
'Add menubar div to main form's canvas
IF Control(__UI_FormID).Canvas <> 0 THEN _FREEIMAGE Control(__UI_FormID).Canvas
Control(__UI_FormID).Canvas = _NEWIMAGE(Control(__UI_FormID).Width, Control(__UI_FormID).Height, 32)
_DEST Control(__UI_FormID).Canvas
COLOR Control(__UI_FormID).ForeColor, Control(__UI_FormID).BackColor
CLS
IF Control(__UI_FormID).Font THEN _FONT Control(__UI_FormID).Font
__UI_MenuBarOffsetV = falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 2
LINE (0, falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 1)-STEP(Control(__UI_FormID).Width - 1, 0), Darken(Control(__UI_FormID).BackColor, 80)
LINE (0, falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 2)-STEP(Control(__UI_FormID).Width - 1, 0), Darken(Control(__UI_FormID).BackColor, 120)
_DEST 0
END IF
END SUB
'---------------------------------------------------------------------------------
FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidth AS INTEGER, NewHeight AS INTEGER, NewLeft AS INTEGER, NewTop AS INTEGER, ParentID AS LONG)
DIM NextSlot AS LONG, i AS LONG, Temp$, PrevDest AS LONG, TempCanvas AS LONG
@ -4570,36 +4609,7 @@ FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidt
Control(NextSlot).BorderColor = __UI_DefaultColor(ControlType, 5)
IF ControlType = __UI_Type_MenuBar THEN
IF _PIXELSIZE = 0 THEN
'Temporarily create a 32bit screen for proper font handling, in case
'we're still at form setup (SCREEN 0)
TempCanvas = _NEWIMAGE(10, 10, 32)
PrevDest = _DEST
_DEST TempCanvas
END IF
IF Control(__UI_FormID).Font THEN _FONT Control(__UI_FormID).Font
Control(NextSlot).Height = falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5
IF TempCanvas <> 0 THEN
_DEST PrevDest
_FREEIMAGE TempCanvas
END IF
IF __UI_HasMenuBar = False THEN
__UI_HasMenuBar = True
'Add menubar div to main form's canvas
IF Control(__UI_FormID).Canvas <> 0 THEN _FREEIMAGE Control(__UI_FormID).Canvas
Control(__UI_FormID).Canvas = _NEWIMAGE(Control(__UI_FormID).Width, Control(__UI_FormID).Height, 32)
_DEST Control(__UI_FormID).Canvas
COLOR Control(__UI_FormID).ForeColor, Control(__UI_FormID).BackColor
CLS
IF Control(__UI_FormID).Font THEN _FONT Control(__UI_FormID).Font
__UI_MenuBarOffsetV = falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 2
LINE (0, falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 1)-STEP(Control(__UI_FormID).Width - 1, 0), Darken(Control(__UI_FormID).BackColor, 80)
LINE (0, falcon_uspacing& + (((_FONT = 8) * -1) * __UI_Font8Offset + ((_FONT = 16) * -1) * __UI_Font16Offset) + 5 + 2)-STEP(Control(__UI_FormID).Width - 1, 0), Darken(Control(__UI_FormID).BackColor, 120)
_DEST 0
END IF
__UI_AdjustNewMenuBarTopHeight NextSlot
END IF
IF ControlType = __UI_Type_ToggleSwitch OR ControlType = __UI_Type_TrackBar OR ControlType = __UI_Type_TextBox OR ControlType = __UI_Type_Button OR ControlType = __UI_Type_CheckBox OR ControlType = __UI_Type_RadioButton OR ControlType = __UI_Type_ListBox OR ControlType = __UI_Type_DropdownList THEN

View file

@ -283,8 +283,6 @@ SUB __UI_BeforeUpdateDisplay
SetCaption TempValue, "\#"
CASE __UI_Type_ContextMenu
Control(TempValue).HelperCanvas = _COPYIMAGE(ContextMenuIcon, 32)
Control(TempValue).Width = 22
Control(TempValue).Height = 22
RefreshContextMenus
__UI_ActivateMenu Control(TempValue), False
END SELECT
@ -1860,9 +1858,23 @@ SUB ConvertControlToAlternativeType
DIM NewType AS INTEGER
NewType = __UI_Type(Control(__UI_FirstSelectedID).Type).TurnsInto
IF NewType = 0 AND Control(__UI_FirstSelectedID).Type = __UI_Type_TextBox THEN
FOR i = 1 TO UBOUND(Control)
IF Control(i).ControlIsSelected THEN
IF NewType = 0 THEN NewType = __UI_Type_TextBox
FOR i = 1 TO UBOUND(Control)
IF Control(i).ControlIsSelected THEN
Control(i).Type = NewType
Control(i).Width = __UI_Type(NewType).DefaultWidth
Control(i).Height = __UI_Type(NewType).DefaultHeight
IF NewType = __UI_Type_MenuBar THEN
Caption(i) = RTRIM$(Control(i).Name)
__UI_AdjustNewMenuBarTopHeight i
ELSEIF NewType = __UI_Type_ContextMenu THEN
IF Control(i).HelperCanvas = 0 THEN
Control(i).HelperCanvas = _COPYIMAGE(ContextMenuIcon, 32)
END IF
ELSEIF NewType = __UI_Type_TextBox THEN
IF Control(i).NumericOnly = False THEN
Control(i).NumericOnly = __UI_NumericWithBounds
IF Control(i).Min = 0 AND Control(i).Max = 0 THEN
@ -1877,19 +1889,16 @@ SUB ConvertControlToAlternativeType
END IF
END IF
END IF
NEXT
__UI_ForceRedraw = True
EXIT SUB
END IF
FOR i = 1 TO UBOUND(Control)
IF Control(i).ControlIsSelected THEN
Control(i).Type = NewType
Control(i).Width = __UI_Type(NewType).DefaultWidth
Control(i).Height = __UI_Type(NewType).DefaultHeight
END IF
NEXT
IF NewType = __UI_Type_MenuBar OR NewType = __UI_Type_ContextMenu THEN
__UI_RefreshMenuBar
__UI_HasMenuBar = (__UI_FirstMenuBarControl > 0)
RefreshContextMenus
__UI_ActivateMenu Control(__UI_FirstSelectedID), False
END IF
__UI_ForceRedraw = True
END SUB