mirror of
https://github.com/FellippeHeitor/InForm.git
synced 2025-01-15 11:59:34 +00:00
Fixes and improvements to InForm.ui:
- Design mode now has a contextual menu for alignment and clipboard operations. - Fix: Menu bar items can't be invoked by hovering if a context menu is active. - Selection rectangle for Design Mode. - New Event: __UI_BeforeInit - Fix: Crash after last control is deleted in Design Mode - limits the use of hardware images. - Single line textboxes can now use non-fixedwidth fonts. - ESC unselects all controls (design mode) - Pasting the same control over and over positions the new instance in a different spot. - New controls are created after all controls in the array; empty slots will occur, but it fixes incorrect creation of new controls. - New listbox method: __UI_GetListBoxItem$ - Fix: selecting a listbox item by typing its name now properly triggers __UI_ValueChanged event.
This commit is contained in:
parent
b9bebbee59
commit
101590d650
1 changed files with 577 additions and 161 deletions
554
InForm.ui
554
InForm.ui
|
@ -163,7 +163,7 @@ DIM SHARED __UI_ExitTriggered AS _BYTE
|
|||
DIM SHARED __UI_Loaded AS _BYTE
|
||||
DIM SHARED __UI_EventsTimer AS INTEGER, __UI_RefreshTimer AS INTEGER
|
||||
DIM SHARED __UI_ActiveDropdownList AS LONG, __UI_ParentDropdownList AS LONG
|
||||
DIM SHARED __UI_ActiveMenu AS LONG, __UI_ParentMenu AS LONG
|
||||
DIM SHARED __UI_ActiveMenu AS LONG, __UI_ParentMenu AS LONG, __UI_ActiveMenuIsContextMenu AS _BYTE
|
||||
DIM SHARED __UI_ActiveTipID AS LONG, __UI_TipTimer AS DOUBLE
|
||||
DIM SHARED __UI_ActiveTipTop AS INTEGER, __UI_ActiveTipLeft AS INTEGER
|
||||
DIM SHARED __UI_FormID AS LONG, __UI_HasMenuBar AS LONG
|
||||
|
@ -175,6 +175,8 @@ DIM SHARED __UI_DesignMode AS _BYTE, __UI_FirstSelectedID AS LONG
|
|||
DIM SHARED __UI_WaitMessage AS STRING, __UI_TotalSelectedControls AS LONG
|
||||
DIM SHARED __UI_WaitMessageHandle AS LONG
|
||||
DIM SHARED __UI_LastRenderedLineWidth AS LONG, __UI_LastRenderedCharCount AS LONG
|
||||
DIM SHARED __UI_SelectionRectangleTop AS INTEGER, __UI_SelectionRectangleLeft AS INTEGER
|
||||
DIM SHARED __UI_SelectionRectangle AS _BYTE
|
||||
|
||||
'Control types:
|
||||
DIM SHARED __UI_Type(0 TO 17) AS __UI_Types
|
||||
|
@ -245,6 +247,7 @@ CONST __UI_False = 0
|
|||
ON ERROR GOTO __UI_ErrorHandler
|
||||
|
||||
__UI_ThemeSetup
|
||||
__UI_InternalMenus
|
||||
__UI_LoadForm
|
||||
|
||||
__UI_Init
|
||||
|
@ -258,10 +261,56 @@ SYSTEM
|
|||
__UI_ErrorHandler:
|
||||
RESUME NEXT
|
||||
|
||||
'---------------------------------------------------------------------------------
|
||||
SUB __UI_InternalMenus
|
||||
'Internal "design mode" context menu. -------------------------------------------
|
||||
DIM __UI_NewID AS LONG
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_ContextMenu, "__UI_PreviewMenu", 0, 0, 0, 0, 0)
|
||||
__UI_Controls(__UI_NewID).Font = __UI_Font("InForm\NotoMono-Regular.ttf",12,"")
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignLeft", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignLeft", "Align &Left"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignRight", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignRight", "Align &Right"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignTops", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignTops", "Align T&op"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignBottoms", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignBottoms", "Align &Bottom-"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignCenterV", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignCenterV", "Center &Vertically"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuAlignCenterH", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuAlignCenterH", "Center &Horizontally-"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuDistributeV", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuDistributeV", "Distribute Ver&tically"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuDistributeH", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuDistributeH", "Distribute Hori&zontally-"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuCopy", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuCopy", "&Copy"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuPaste", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuPaste", "&Paste"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuDelete", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuDelete", "&Delete-"
|
||||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_PreviewMenuSelect", 0, 0, 0, 0, __UI_GetID("__UI_PreviewMenu"))
|
||||
__UI_SetCaption "__UI_PreviewMenuSelect", "Select &All"
|
||||
END SUB
|
||||
|
||||
'---------------------------------------------------------------------------------
|
||||
SUB __UI_Init
|
||||
DIM i AS LONG
|
||||
|
||||
__UI_BeforeInit
|
||||
|
||||
IF __UI_FormID = 0 THEN SYSTEM
|
||||
|
||||
SCREEN _NEWIMAGE(__UI_Controls(__UI_FormID).Width, __UI_Controls(__UI_FormID).Height, 32)
|
||||
|
@ -273,7 +322,8 @@ SUB __UI_Init
|
|||
|
||||
IF __UI_Captions(__UI_FormID) = "" THEN __UI_Captions(__UI_FormID) = RTRIM$(__UI_Controls(__UI_FormID).Name)
|
||||
|
||||
'Internal "text field" context menu. --------------------------------------------------------------
|
||||
IF NOT __UI_DesignMode THEN
|
||||
'Internal "text field" context menus. -------------------------------------------
|
||||
DIM __UI_NewID AS LONG
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_ContextMenu, "__UI_TextFieldMenu", 0, 0, 0, 0, 0)
|
||||
|
||||
|
@ -297,7 +347,7 @@ SUB __UI_Init
|
|||
|
||||
__UI_NewID = __UI_NewControl(__UI_Type_MenuItem, "__UI_TextMenuSelect", 0, 0, 0, 0, __UI_GetID("__UI_TextFieldMenu"))
|
||||
__UI_SetCaption "__UI_TextMenuSelect", "Select &all"
|
||||
'--------------------------------------------------------------------------------------------------
|
||||
END IF
|
||||
|
||||
_DISPLAYORDER _SOFTWARE, _HARDWARE
|
||||
_DISPLAY
|
||||
|
@ -439,7 +489,7 @@ SUB __UI_ProcessInput
|
|||
'For an active menu, we'll detect individual menu items being hovered
|
||||
_FONT __UI_Controls(TempHover).Font
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ParentID = __UI_ParentMenu THEN
|
||||
IF __UI_Controls(i).ParentID = __UI_ParentMenu AND __UI_Controls(i).Hidden = __UI_False THEN
|
||||
IF __UI_MouseTop >= __UI_Controls(__UI_ActiveMenu).Top + __UI_Controls(i).Top AND __UI_MouseTop <= __UI_Controls(__UI_ActiveMenu).Top + __UI_Controls(i).Top + __UI_Controls(i).Height - 1 THEN
|
||||
TempHover = __UI_Controls(i).ID
|
||||
__UI_Focus = __UI_Controls(i).ID
|
||||
|
@ -487,7 +537,7 @@ SUB __UI_ProcessInput
|
|||
IF __UI_ActiveMenu = 0 THEN
|
||||
__UI_Focus = __UI_HoveringID
|
||||
END IF
|
||||
ELSEIF __UI_Controls(__UI_Focus).Type = __UI_Type_MenuPanel AND __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuBar THEN
|
||||
ELSEIF __UI_Controls(__UI_Focus).Type = __UI_Type_MenuPanel AND __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuBar AND __UI_ActiveMenuIsContextMenu = __UI_False THEN
|
||||
IF __UI_ParentMenu <> __UI_HoveringID AND NOT __UI_Controls(__UI_HoveringID).Disabled THEN
|
||||
__UI_ActivateMenu __UI_Controls(__UI_HoveringID), __UI_False
|
||||
__UI_ForceRedraw = __UI_True
|
||||
|
@ -574,7 +624,6 @@ SUB __UI_ProcessInput
|
|||
__UI_RefreshMenuBar
|
||||
END IF
|
||||
_DEST 0
|
||||
'FIXATTEMPT:__UI_MakeHardwareImageFromCanvas __UI_Controls(__UI_FormID)
|
||||
|
||||
IF LEN(__UI_CurrentTitle) THEN _TITLE __UI_CurrentTitle
|
||||
__UI_AutoRefresh = __UI_True
|
||||
|
@ -656,7 +705,6 @@ SUB __UI_UpdateDisplay
|
|||
NEXT
|
||||
'Make it a hardware version of itself:
|
||||
_DEST 0
|
||||
'FIXATTEMPT:__UI_MakeHardwareImageFromCanvas __UI_Controls(__UI_FormID)
|
||||
END IF
|
||||
END IF
|
||||
_DEST 0
|
||||
|
@ -679,7 +727,6 @@ SUB __UI_UpdateDisplay
|
|||
LINE (0, uspacing& * 1.5 + 2)-STEP(__UI_Controls(__UI_FormID).Width - 1, 0), __UI_Darken(__UI_Controls(__UI_FormID).BackColor, 120)
|
||||
END IF
|
||||
_DEST 0
|
||||
'FIXATTEMPT:__UI_MakeHardwareImageFromCanvas __UI_Controls(__UI_FormID)
|
||||
END IF
|
||||
|
||||
'Control drawing
|
||||
|
@ -728,7 +775,7 @@ SUB __UI_UpdateDisplay
|
|||
__UI_DrawTrackBar __UI_Controls(i), ControlState
|
||||
CASE __UI_Type_TextBox
|
||||
'Text boxes
|
||||
IF __UI_Controls(i).InputViewStart = 0 THEN __UI_Controls(i).InputViewStart = 1
|
||||
'IF __UI_Controls(i).InputViewStart = 0 THEN __UI_Controls(i).InputViewStart = 1
|
||||
|
||||
IF __UI_Controls(i).TextIsSelected THEN
|
||||
DIM s1 AS LONG, s2 AS LONG
|
||||
|
@ -851,6 +898,25 @@ SUB __UI_UpdateDisplay
|
|||
END IF
|
||||
NEXT
|
||||
|
||||
IF __UI_DesignMode AND __UI_SelectionRectangle THEN
|
||||
IF OverlayReset = __UI_False THEN
|
||||
'Reset the helper canvas of the main form
|
||||
OverlayReset = __UI_True
|
||||
IF __UI_Controls(__UI_FormID).HelperCanvas <> 0 THEN _FREEIMAGE __UI_Controls(__UI_FormID).HelperCanvas
|
||||
__UI_Controls(__UI_FormID).HelperCanvas = _NEWIMAGE(__UI_Controls(__UI_FormID).Width, __UI_Controls(__UI_FormID).Height, 32)
|
||||
_DEST __UI_Controls(__UI_FormID).HelperCanvas
|
||||
CLS , _RGBA32(0, 0, 0, 0)
|
||||
ELSE
|
||||
_DEST __UI_Controls(__UI_FormID).HelperCanvas
|
||||
END IF
|
||||
OverlayisVisible = __UI_True
|
||||
|
||||
'LINE(__UI_SelectionRectangleLeft, __UI_SelectionRectangleTop)-(__UI_MouseLeft,__UI_MouseTop), _RGBA32(39, 144, 244, 100), BF
|
||||
'LINE(__UI_SelectionRectangleLeft, __UI_SelectionRectangleTop)-(__UI_MouseLeft,__UI_MouseTop), _RGB32(39, 188, 244), B
|
||||
LINE(__UI_SelectionRectangleLeft, __UI_SelectionRectangleTop)-(__UI_MouseLeft,__UI_MouseTop), __UI_Controls(__UI_FormID).SelectedBackColor, B, 255
|
||||
_DEST 0
|
||||
END IF
|
||||
|
||||
IF OverlayisVisible THEN
|
||||
__UI_MakeHardwareImage __UI_Controls(__UI_FormID).HelperCanvas
|
||||
_PUTIMAGE , __UI_Controls(__UI_FormID).HelperCanvas
|
||||
|
@ -1037,10 +1103,12 @@ SUB __UI_EventDispatcher
|
|||
ELSEIF __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuBar AND LastMouseLeft <> __UI_MouseLeft THEN
|
||||
LastMouseLeft = __UI_MouseLeft
|
||||
IF __UI_ActiveMenu > 0 AND __UI_ParentMenu <> __UI_Controls(__UI_HoveringID).ID AND __UI_ParentMenu > 0 THEN
|
||||
IF __UI_ActiveMenuIsContextMenu = __UI_False THEN
|
||||
__UI_ActivateMenu __UI_Controls(__UI_HoveringID), __UI_False
|
||||
__UI_ForceRedraw = __UI_True
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF __UI_Controls(__UI_Focus).Type = __UI_Type_MenuItem AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_MenuItem THEN
|
||||
__UI_Focus = __UI_ActiveMenu
|
||||
|
@ -1205,9 +1273,57 @@ SUB __UI_EventDispatcher
|
|||
__UI_Mouse2IsDown = __UI_False
|
||||
__UI_Mouse2DownOnID = 0
|
||||
'Click
|
||||
IF __UI_Controls(__UI_HoveringID).ContextMenuID > 0 AND __UI_Controls(__UI_HoveringID).Disabled = __UI_False THEN
|
||||
IF __UI_DesignMode THEN
|
||||
DIM RightClickSelect AS _BYTE
|
||||
RightClickSelect = __UI_True
|
||||
GOSUB DesignModeClickToSelect
|
||||
IF __UI_TotalSelectedControls = 0 THEN
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignLeft")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignRight")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignTops")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignBottoms")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterV")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterH")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeV")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeH")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuCopy")).Disabled = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDelete")).Disabled = __UI_True
|
||||
ELSEIF __UI_TotalSelectedControls = 1 THEN
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignLeft")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignRight")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignTops")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignBottoms")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterV")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterH")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeV")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeH")).Hidden = __UI_True
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuCopy")).Disabled = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDelete")).Disabled = __UI_False
|
||||
ELSE
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignLeft")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignRight")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignTops")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignBottoms")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterV")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuAlignCenterH")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeV")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDistributeH")).Hidden = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuCopy")).Disabled = __UI_False
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuDelete")).Disabled = __UI_False
|
||||
END IF
|
||||
|
||||
IF _CLIPBOARD$ = "InForm" + CHR$(1) THEN
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuPaste")).Disabled = __UI_False
|
||||
ELSE
|
||||
__UI_Controls(__UI_GetID("__UI_PreviewMenuPaste")).Disabled = __UI_True
|
||||
END IF
|
||||
|
||||
__UI_ActivateMenu __UI_Controls(__UI_GetID("__UI_PreviewMenu")), __UI_False
|
||||
ELSEIF __UI_Controls(__UI_HoveringID).ContextMenuID > 0 AND __UI_Controls(__UI_HoveringID).Disabled = __UI_False THEN
|
||||
__UI_Focus = __UI_HoveringID
|
||||
__UI_PreviousFocus = __UI_Focus
|
||||
|
||||
'Internal text field menu:
|
||||
IF __UI_Controls(__UI_HoveringID).ContextMenuID = __UI_GetID("__UI_TextFieldMenu") THEN
|
||||
IF __UI_Controls(__UI_HoveringID).TextIsSelected THEN
|
||||
__UI_Controls(__UI_GetID("__UI_TextMenuCut")).Disabled = __UI_False
|
||||
|
@ -1236,6 +1352,15 @@ SUB __UI_EventDispatcher
|
|||
__UI_MouseDownTop = __UI_MouseTop
|
||||
__UI_MouseDownLeft = __UI_MouseLeft
|
||||
IF __UI_DesignMode THEN
|
||||
IF LEFT$(__UI_Controls(__UI_HoveringID).Name, 5) = "__UI_" THEN GOTO ProcessClick
|
||||
DesignModeClickToSelect:
|
||||
IF __UI_ActiveMenu > 0 THEN
|
||||
IF __UI_Controls(__UI_Focus).Type <> __UI_Type_MenuItem THEN
|
||||
__UI_DestroyControl __UI_Controls(__UI_ActiveMenu)
|
||||
__UI_ForceRedraw = __UI_True
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF _KEYDOWN(100304) OR _KEYDOWN(100303) THEN
|
||||
IF __UI_Controls(__UI_HoveringID).Type <> __UI_Type_Frame AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_Form AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_Font AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_MenuBar AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_MenuItem AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_MenuPanel AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_ContextMenu AND __UI_Controls(__UI_HoveringID).Type <> __UI_Type_MenuItem THEN
|
||||
IF __UI_Controls(__UI_HoveringID).ControlIsSelected = __UI_False AND __UI_Controls(__UI_HoveringID).ParentID = __UI_Controls(__UI_FirstSelectedID).ParentID AND __UI_Controls(__UI_FirstSelectedID).Type <> __UI_Type_Frame THEN
|
||||
|
@ -1262,6 +1387,7 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
END IF
|
||||
END IF
|
||||
IF RightClickSelect THEN RETURN
|
||||
ELSEIF __UI_Controls(__UI_HoveringID).CanHaveFocus AND NOT __UI_Controls(__UI_HoveringID).Disabled THEN
|
||||
STATIC JustEnteredTextBox AS DOUBLE
|
||||
IF __UI_Focus <> __UI_HoveringID THEN
|
||||
|
@ -1286,6 +1412,14 @@ SUB __UI_EventDispatcher
|
|||
__UI_MouseIsDown = __UI_True
|
||||
__UI_MouseDownOnID = __UI_HoveringID
|
||||
|
||||
IF __UI_DesignMode AND __UI_MouseDownOnID = __UI_FormID THEN
|
||||
__UI_SelectionRectangle = __UI_True
|
||||
__UI_SelectionRectangleTop = __UI_MouseTop
|
||||
__UI_SelectionRectangleLeft = __UI_MouseLeft
|
||||
ELSE
|
||||
__UI_SelectionRectangle = __UI_False
|
||||
END IF
|
||||
|
||||
IF NOT __UI_DesignMode THEN
|
||||
IF __UI_Controls(__UI_Focus).Type = __UI_Type_TextBox AND NOT __UI_Controls(__UI_Focus).Disabled THEN
|
||||
_FONT __UI_Controls(__UI_Focus).Font
|
||||
|
@ -1339,13 +1473,17 @@ SUB __UI_EventDispatcher
|
|||
__UI_Controls(__UI_Focus).TextIsSelected = __UI_False
|
||||
__UI_SelectedText = ""
|
||||
__UI_SelectionLength = 0
|
||||
IF NOT __UI_Controls(__UI_Focus).Multiline THEN
|
||||
'Single-line textbox click
|
||||
__UI_Controls(__UI_Focus).SelectionStart = ((__UI_MouseLeft - (__UI_Controls(__UI_Focus).Left + __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left)) / _FONTWIDTH) + (__UI_Controls(__UI_HoveringID).InputViewStart - 1)
|
||||
__UI_Controls(__UI_Focus).Cursor = __UI_Controls(__UI_Focus).SelectionStart
|
||||
IF __UI_Controls(__UI_Focus).SelectionStart > LEN(__UI_Texts(__UI_Focus)) THEN __UI_Controls(__UI_Focus).SelectionStart = LEN(__UI_Texts(__UI_Focus))
|
||||
IF __UI_Controls(__UI_Focus).Cursor > LEN(__UI_Texts(__UI_Focus)) THEN __UI_Controls(__UI_Focus).Cursor = LEN(__UI_Texts(__UI_HoveringID))
|
||||
FOR i = 1 TO __UI_LastRenderedCharCount
|
||||
IF (__UI_MouseLeft - __UI_Controls(__UI_Focus).Left - __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left + __UI_Controls(__UI_Focus).InputViewStart) >= __UI_ThisLineChars(i - 1) AND (__UI_MouseLeft - __UI_Controls(__UI_Focus).Left - __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left) + __UI_Controls(__UI_Focus).InputViewStart <= __UI_ThisLineChars(i) THEN
|
||||
__UI_Controls(__UI_Focus).Cursor = i - 1
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
IF i > __UI_LastRenderedCharCount THEN __UI_Controls(__UI_Focus).Cursor = LEN(__UI_Texts(__UI_Focus))
|
||||
IF i < 0 THEN i = __UI_Controls(__UI_Focus).Cursor = 0
|
||||
__UI_Controls(__UI_Focus).SelectionStart = __UI_Controls(__UI_Focus).Cursor
|
||||
END IF
|
||||
__UI_IsSelectingText = __UI_True
|
||||
__UI_IsSelectingTextOnID = __UI_Focus
|
||||
|
@ -1369,7 +1507,7 @@ SUB __UI_EventDispatcher
|
|||
'Mouse button is still pressed
|
||||
IF __UI_DesignMode THEN
|
||||
IF __UI_ResizeHandleHover = 0 AND (TIMER - __UI_LastMouseDownEvent > .3 OR (__UI_MouseTop <> __UI_MouseDownTop OR __UI_MouseLeft <> __UI_MouseDownLeft)) THEN
|
||||
IF __UI_IsDragging = __UI_False THEN
|
||||
IF __UI_IsDragging = __UI_False AND __UI_SelectionRectangle = __UI_False THEN
|
||||
__UI_IsDragging = __UI_True
|
||||
__UI_DraggingID = __UI_HoveringID
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
|
@ -1386,7 +1524,7 @@ SUB __UI_EventDispatcher
|
|||
__UI_DragX = __UI_MouseLeft
|
||||
END IF
|
||||
ELSE
|
||||
IF __UI_IsResizing = __UI_False THEN
|
||||
IF __UI_IsResizing = __UI_False AND __UI_SelectionRectangle = __UI_False THEN
|
||||
__UI_IsResizing = __UI_True
|
||||
__UI_ResizingID = __UI_HoveringID
|
||||
__UI_MouseDownOnID = 0
|
||||
|
@ -1402,9 +1540,16 @@ SUB __UI_EventDispatcher
|
|||
_FONT (__UI_Controls(__UI_IsSelectingTextOnID).Font)
|
||||
IF NOT __UI_Controls(__UI_IsSelectingTextOnID).Multiline THEN
|
||||
'Single line selection
|
||||
__UI_Controls(__UI_IsSelectingTextOnID).Cursor = ((__UI_MouseLeft - (__UI_Controls(__UI_IsSelectingTextOnID).Left + __UI_Controls(__UI_Controls(__UI_IsSelectingTextOnID).ParentID).Left)) / _FONTWIDTH) + (__UI_Controls(__UI_IsSelectingTextOnID).InputViewStart - 1)
|
||||
IF __UI_Controls(__UI_IsSelectingTextOnID).Cursor < 0 THEN __UI_Controls(__UI_IsSelectingTextOnID).Cursor = 0
|
||||
IF __UI_Controls(__UI_IsSelectingTextOnID).Cursor > LEN(__UI_Texts(__UI_IsSelectingTextOnID)) THEN __UI_Controls(__UI_IsSelectingTextOnID).Cursor = LEN(__UI_Texts(__UI_IsSelectingTextOnID))
|
||||
FOR i = 1 TO __UI_LastRenderedCharCount
|
||||
IF (__UI_MouseLeft - __UI_Controls(__UI_Focus).Left - __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left + __UI_Controls(__UI_Focus).InputViewStart) >= __UI_ThisLineChars(i - 1) AND (__UI_MouseLeft - __UI_Controls(__UI_Focus).Left - __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left) + __UI_Controls(__UI_Focus).InputViewStart <= __UI_ThisLineChars(i) THEN
|
||||
__UI_Controls(__UI_Focus).Cursor = i - 1
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
IF i > __UI_LastRenderedCharCount THEN __UI_Controls(__UI_Focus).Cursor = LEN(__UI_Texts(__UI_Focus))
|
||||
IF __UI_MouseLeft < __UI_Controls(__UI_Focus).Left - __UI_Controls(__UI_Controls(__UI_Focus).ParentID).Left THEN __UI_Controls(__UI_Focus).Cursor = 0
|
||||
|
||||
IF __UI_Controls(__UI_IsSelectingTextOnID).Cursor <> __UI_Controls(__UI_IsSelectingTextOnID).SelectionStart THEN
|
||||
__UI_Controls(__UI_IsSelectingTextOnID).TextIsSelected = __UI_True
|
||||
END IF
|
||||
|
@ -1435,6 +1580,7 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
END IF
|
||||
|
||||
IF NOT __UI_SelectionRectangle THEN
|
||||
IF __UI_MouseDownOnID <> __UI_HoveringID AND __UI_MouseDownOnID > 0 THEN
|
||||
IF __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuItem OR __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuPanel OR __UI_Controls(__UI_HoveringID).Type = __UI_Type_MenuBar THEN
|
||||
__UI_MouseDownOnID = __UI_HoveringID
|
||||
|
@ -1496,6 +1642,7 @@ SUB __UI_EventDispatcher
|
|||
IF __UI_Controls(__UI_HoveringID).PreviousValue <> __UI_Controls(__UI_HoveringID).Value THEN __UI_ValueChanged __UI_Focus
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF __UI_MouseDownOnID = 0 AND __UI_Controls(__UI_PreviousMouseDownOnID).Type = __UI_Type_TrackBar AND NOT __UI_Controls(__UI_PreviousMouseDownOnID).Disabled THEN
|
||||
__UI_Controls(__UI_PreviousMouseDownOnID).Value = INT(((__UI_MouseLeft - (__UI_Controls(__UI_Controls(__UI_PreviousMouseDownOnID).ParentID).Left + __UI_Controls(__UI_PreviousMouseDownOnID).Left)) / __UI_Controls(__UI_PreviousMouseDownOnID).Width) * __UI_Controls(__UI_PreviousMouseDownOnID).Max)
|
||||
|
@ -1569,25 +1716,25 @@ SUB __UI_EventDispatcher
|
|||
ELSE
|
||||
IF TIMER - JustEnteredTextBox > .3 THEN
|
||||
_FONT (__UI_Controls(__UI_HoveringID).Font)
|
||||
IF NOT __UI_Controls(__UI_HoveringID).Multiline THEN
|
||||
'Single-line textbox
|
||||
TempNewCursor = ((__UI_MouseLeft - (__UI_Controls(__UI_HoveringID).Left + __UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Left)) / _FONTWIDTH) + (__UI_Controls(__UI_HoveringID).InputViewStart - 1)
|
||||
IF __UI_HoveringID = LastTextBoxClickID AND TIMER - LastTextBoxClick < .3 AND TempNewCursor = __UI_Controls(__UI_HoveringID).Cursor THEN
|
||||
'Double click in a textbox to select it all
|
||||
IF LEN(__UI_Texts(__UI_HoveringID)) > 0 THEN
|
||||
__UI_Controls(__UI_HoveringID).Cursor = LEN(__UI_Texts(__UI_HoveringID))
|
||||
__UI_Controls(__UI_HoveringID).SelectionStart = 0
|
||||
__UI_Controls(__UI_HoveringID).TextIsSelected = __UI_True
|
||||
END IF
|
||||
ELSE
|
||||
__UI_Controls(__UI_HoveringID).Cursor = TempNewCursor
|
||||
IF __UI_Controls(__UI_HoveringID).Cursor > LEN(__UI_Texts(__UI_HoveringID)) THEN __UI_Controls(__UI_HoveringID).Cursor = LEN(__UI_Texts(__UI_HoveringID))
|
||||
END IF
|
||||
LastTextBoxClick = TIMER
|
||||
LastTextBoxClickID = __UI_HoveringID
|
||||
ELSE
|
||||
'Multiline textbox
|
||||
END IF
|
||||
'IF NOT __UI_Controls(__UI_HoveringID).Multiline THEN
|
||||
' 'Single-line textbox
|
||||
' TempNewCursor = ((__UI_MouseLeft - (__UI_Controls(__UI_HoveringID).Left + __UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Left)) / _FONTWIDTH) + (__UI_Controls(__UI_HoveringID).InputViewStart - 1)
|
||||
' IF __UI_HoveringID = LastTextBoxClickID AND TIMER - LastTextBoxClick < .3 AND TempNewCursor = __UI_Controls(__UI_HoveringID).Cursor THEN
|
||||
' 'Double click in a textbox to select it all
|
||||
' IF LEN(__UI_Texts(__UI_HoveringID)) > 0 THEN
|
||||
' __UI_Controls(__UI_HoveringID).Cursor = LEN(__UI_Texts(__UI_HoveringID))
|
||||
' __UI_Controls(__UI_HoveringID).SelectionStart = 0
|
||||
' __UI_Controls(__UI_HoveringID).TextIsSelected = __UI_True
|
||||
' END IF
|
||||
' ELSE
|
||||
' __UI_Controls(__UI_HoveringID).Cursor = TempNewCursor
|
||||
' IF __UI_Controls(__UI_HoveringID).Cursor > LEN(__UI_Texts(__UI_HoveringID)) THEN __UI_Controls(__UI_HoveringID).Cursor = LEN(__UI_Texts(__UI_HoveringID))
|
||||
' END IF
|
||||
' LastTextBoxClick = TIMER
|
||||
' LastTextBoxClickID = __UI_HoveringID
|
||||
'ELSE
|
||||
' 'Multiline textbox
|
||||
'END IF
|
||||
END IF
|
||||
END IF
|
||||
CASE __UI_Type_ListBox
|
||||
|
@ -1640,9 +1787,14 @@ SUB __UI_EventDispatcher
|
|||
__UI_MouseDownOnID = 0
|
||||
|
||||
ProcessClick:
|
||||
IF RTRIM$(__UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Name) = "__UI_TextFieldMenu" OR RTRIM$(__UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Name) = "__UI_PreviewMenu" THEN
|
||||
'Internal context menus - Text field/Design mode options
|
||||
IF RTRIM$(__UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Name) = "__UI_TextFieldMenu" THEN
|
||||
'Internal context menus - Text field options
|
||||
__UI_Focus = __UI_PreviousFocus
|
||||
ELSEIF RTRIM$(__UI_Controls(__UI_Controls(__UI_HoveringID).ParentID).Name) = "__UI_PreviewMenu" THEN
|
||||
__UI_DestroyControl __UI_Controls(__UI_ActiveMenu)
|
||||
END IF
|
||||
|
||||
SELECT CASE UCASE$(RTRIM$(__UI_Controls(__UI_HoveringID).Name))
|
||||
CASE "__UI_TEXTMENUCUT"
|
||||
IF LEN(__UI_SelectedText) > 0 THEN
|
||||
|
@ -1663,6 +1815,115 @@ SUB __UI_EventDispatcher
|
|||
__UI_Controls(__UI_Focus).SelectionStart = 0
|
||||
__UI_Controls(__UI_Focus).TextIsSelected = __UI_True
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNLEFT"
|
||||
IF __UI_TotalSelectedControls > 1 THEN
|
||||
DIM LeftMost AS INTEGER
|
||||
LeftMost = __UI_Controls(__UI_FormID).Width
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Left < LeftMost THEN LeftMost = __UI_Controls(i).Left
|
||||
END IF
|
||||
NEXT
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Left = LeftMost
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNRIGHT"
|
||||
IF __UI_TotalSelectedControls > 1 THEN
|
||||
DIM RightMost AS INTEGER
|
||||
RightMost = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Left + __UI_Controls(i).Width - 1 > RightMost THEN RightMost = __UI_Controls(i).Left + __UI_Controls(i).Width - 1
|
||||
END IF
|
||||
NEXT
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Left = RightMost - (__UI_Controls(i).Width - 1)
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNCENTERV"
|
||||
IF __UI_TotalSelectedControls = 1 THEN
|
||||
__UI_Controls(__UI_FirstSelectedID).Top = __UI_Controls(__UI_FormID).Height / 2 - __UI_Controls(__UI_FirstSelectedID).Height / 2
|
||||
ELSEIF __UI_TotalSelectedControls > 1 THEN
|
||||
DIM TopMost AS INTEGER, BottomMost AS INTEGER, SelectionHeight AS INTEGER
|
||||
DIM TopDifference AS INTEGER, NewTopMost AS INTEGER
|
||||
TopMost = __UI_Controls(__UI_FormID).Height
|
||||
BottomMost = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Top < TopMost THEN TopMost = __UI_Controls(i).Top
|
||||
IF __UI_Controls(i).Top + __UI_Controls(i).Height - 1 > BottomMost THEN BottomMost = __UI_Controls(i).Top + __UI_Controls(i).Height - 1
|
||||
END IF
|
||||
NEXT
|
||||
SelectionHeight = BottomMost - TopMost
|
||||
NewTopMost = __UI_Controls(__UI_FormID).Height / 2 - SelectionHeight / 2
|
||||
TopDifference = TopMost - NewTopMost
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Top = __UI_Controls(i).Top - TopDifference
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNCENTERH"
|
||||
__UI_DestroyControl __UI_Controls(__UI_ActiveMenu)
|
||||
IF __UI_TotalSelectedControls = 1 THEN
|
||||
__UI_Controls(__UI_FirstSelectedID).Left = __UI_Controls(__UI_FormID).Width / 2 - __UI_Controls(__UI_FirstSelectedID).Width / 2
|
||||
ELSEIF __UI_TotalSelectedControls > 1 THEN
|
||||
DIM SelectionWidth AS INTEGER
|
||||
DIM LeftDifference AS INTEGER, NewLeftMost AS INTEGER
|
||||
LeftMost = __UI_Controls(__UI_FormID).Width
|
||||
RightMost = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Left < LeftMost THEN LeftMost = __UI_Controls(i).Left
|
||||
IF __UI_Controls(i).Left + __UI_Controls(i).Width - 1 > RightMost THEN RightMost = __UI_Controls(i).Left + __UI_Controls(i).Width - 1
|
||||
END IF
|
||||
NEXT
|
||||
SelectionWidth = RightMost - LeftMost
|
||||
NewLeftMost = __UI_Controls(__UI_FormID).Width / 2 - SelectionWidth / 2
|
||||
LeftDifference = LeftMost - NewLeftMost
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Left = __UI_Controls(i).Left - LeftDifference
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNTOPS"
|
||||
IF __UI_TotalSelectedControls > 1 THEN
|
||||
TopMost = __UI_Controls(__UI_FormID).Height
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Top < TopMost THEN TopMost = __UI_Controls(i).Top
|
||||
END IF
|
||||
NEXT
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Top = TopMost
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUALIGNBOTTOMS"
|
||||
IF __UI_TotalSelectedControls > 1 THEN
|
||||
BottomMost = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Top + __UI_Controls(i).Height - 1 > BottomMost THEN BottomMost = __UI_Controls(i).Top + __UI_Controls(i).Height - 1
|
||||
END IF
|
||||
NEXT
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_Controls(i).Top = BottomMost - (__UI_Controls(i).Height - 1)
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
CASE "__UI_PREVIEWMENUCOPY": GOTO ControlCopy
|
||||
CASE "__UI_PREVIEWMENUPASTE": GOTO ControlPaste
|
||||
CASE "__UI_PREVIEWMENUDELETE": GOTO ControlDelete
|
||||
CASE "__UI_PREVIEWMENUSELECT": GOTO ControlSelect
|
||||
END SELECT
|
||||
__UI_KeyPress __UI_Focus
|
||||
ELSE
|
||||
|
@ -1687,6 +1948,7 @@ SUB __UI_EventDispatcher
|
|||
__UI_MouseIsDown = __UI_False
|
||||
__UI_MouseDownOnID = 0
|
||||
__UI_PreviousMouseDownOnID = 0
|
||||
__UI_SelectionRectangle = __UI_False
|
||||
END IF
|
||||
END IF
|
||||
|
||||
|
@ -1822,6 +2084,43 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
END IF
|
||||
END IF
|
||||
IF __UI_SelectionRectangle THEN
|
||||
DIM tsmx AS INTEGER, tmx AS INTEGER
|
||||
DIM tsmy AS INTEGER, tmy AS INTEGER
|
||||
tsmx = __UI_SelectionRectangleLeft: tmx = __UI_MouseLeft
|
||||
tsmy = __UI_SelectionRectangleTop: tmy = __UI_MouseTop
|
||||
IF tsmx > tmx THEN SWAP tsmx, tmx
|
||||
IF tsmy > tmy THEN SWAP tsmy, tmy
|
||||
'Check for mouse going through objects, not encompassing corners:
|
||||
__UI_TotalSelectedControls = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
__UI_Controls(i).ControlIsSelected = __UI_False
|
||||
IF __UI_Controls(i).Type <> __UI_Type_Form AND __UI_Controls(i).Type <> __UI_Type_Font AND __UI_Controls(i).Type <> __UI_Type_MenuBar AND __UI_Controls(i).Type <> __UI_Type_MenuItem AND __UI_Controls(i).Type <> __UI_Type_MenuPanel AND __UI_Controls(i).Type <> __UI_Type_ContextMenu THEN
|
||||
IF tmx >= __UI_Controls(i).Left AND tmx <= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tmy >= __UI_Controls(i).Top AND tmy <= __UI_Controls(i).Top + __UI_Controls(i).Height - 1 THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
IF tsmx >= __UI_Controls(i).Left AND tsmx <= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tsmy >= __UI_Controls(i).Top AND tsmy <= __UI_Controls(i).Top + __UI_Controls(i).Height - 1 THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_TotalSelectedControls = __UI_TotalSelectedControls + 1
|
||||
IF __UI_TotalSelectedControls = 1 THEN __UI_FirstSelectedID = i
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
'Check for corners:
|
||||
DIM WasSelected AS _BYTE
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).Type <> __UI_Type_Form AND __UI_Controls(i).Type <> __UI_Type_Font AND __UI_Controls(i).Type <> __UI_Type_MenuBar AND __UI_Controls(i).Type <> __UI_Type_MenuItem AND __UI_Controls(i).Type <> __UI_Type_MenuPanel AND __UI_Controls(i).Type <> __UI_Type_ContextMenu THEN
|
||||
WasSelected = __UI_Controls(i).ControlIsSelected
|
||||
IF tsmx <= __UI_Controls(i).Left AND tmx >= __UI_Controls(i).Left AND tsmy < __UI_Controls(i).Top AND tmy >= __UI_Controls(i).Top THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
IF tsmx <= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tmx >= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tsmy < __UI_Controls(i).Top AND tmy >= __UI_Controls(i).Top THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
IF tsmx <= __UI_Controls(i).Left AND tmx >= __UI_Controls(i).Left AND tsmy < __UI_Controls(i).Top + __UI_Controls(i).Height - 1 AND tmy >= __UI_Controls(i).Top + __UI_Controls(i).Height - 1 THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
IF tsmx <= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tmx >= __UI_Controls(i).Left + __UI_Controls(i).Width - 1 AND tsmy < __UI_Controls(i).Top + __UI_Controls(i).Height - 1 AND tmy >= __UI_Controls(i).Top + __UI_Controls(i).Height - 1 THEN __UI_Controls(i).ControlIsSelected = -1
|
||||
END IF
|
||||
IF __UI_Controls(i).ControlIsSelected AND WasSelected <> __UI_Controls(i).ControlIsSelected THEN
|
||||
__UI_TotalSelectedControls = __UI_TotalSelectedControls + 1
|
||||
IF __UI_TotalSelectedControls = 1 THEN __UI_FirstSelectedID = i
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
|
||||
'Keyboard handler
|
||||
'Modifiers (Ctrl, Alt, Shift):
|
||||
|
@ -1929,6 +2228,16 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
|
||||
'Control-specific keyboard handler:
|
||||
IF __UI_DesignMode THEN
|
||||
IF __UI_KeyHit = 27 THEN
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
__UI_Controls(i).ControlIsSelected = __UI_False
|
||||
NEXT
|
||||
__UI_TotalSelectedControls = 0
|
||||
__UI_FirstSelectedID = 0
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF __UI_Focus > 0 AND __UI_KeyHit <> 0 AND __UI_DesignMode = __UI_False THEN
|
||||
__UI_KeyPress __UI_Focus
|
||||
__UI_KeyboardFocus = __UI_True
|
||||
|
@ -2006,6 +2315,7 @@ SUB __UI_EventDispatcher
|
|||
__UI_KeyHit = 0
|
||||
END SELECT
|
||||
CASE __UI_Type_MenuPanel, __UI_Type_MenuItem
|
||||
HandleDesignMenu:
|
||||
SELECT CASE __UI_KeyHit
|
||||
CASE 48 TO 57, 65 TO 90, 97 TO 122 'Alphanumeric
|
||||
IF __UI_KeyHit >= 97 THEN __UI_KeyHit = __UI_KeyHit - 32 'Turn to capitals
|
||||
|
@ -2029,12 +2339,16 @@ SUB __UI_EventDispatcher
|
|||
__UI_DestroyControl __UI_Controls(__UI_ActiveMenu)
|
||||
__UI_KeyHit = 0
|
||||
CASE 19200 'Left
|
||||
IF __UI_ActiveMenuIsContextMenu = __UI_False THEN
|
||||
__UI_ActivateMenu __UI_Controls(__UI_PreviousMenuBarControl(__UI_ParentMenu)), __UI_True
|
||||
__UI_ForceRedraw = __UI_True
|
||||
END IF
|
||||
__UI_KeyHit = 0
|
||||
CASE 19712 'Right
|
||||
IF __UI_ActiveMenuIsContextMenu = __UI_False THEN
|
||||
__UI_ActivateMenu __UI_Controls(__UI_NextMenuBarControl(__UI_ParentMenu)), __UI_True
|
||||
__UI_ForceRedraw = __UI_True
|
||||
END IF
|
||||
__UI_KeyHit = 0
|
||||
CASE 18432 'Up
|
||||
__UI_Focus = __UI_PreviousMenuItem(__UI_Focus)
|
||||
|
@ -2280,9 +2594,9 @@ SUB __UI_EventDispatcher
|
|||
__UI_Controls(__UI_Focus).Cursor = __UI_Controls(__UI_Focus).Cursor - 1
|
||||
END IF
|
||||
|
||||
IF __UI_Controls(__UI_Focus).Cursor + 1 = __UI_Controls(__UI_Focus).InputViewStart AND __UI_Controls(__UI_Focus).InputViewStart > 1 THEN
|
||||
__UI_Controls(__UI_Focus).InputViewStart = __UI_Controls(__UI_Focus).InputViewStart - __UI_Controls(__UI_Focus).FieldArea / 2
|
||||
END IF
|
||||
'IF __UI_Controls(__UI_Focus).Cursor + 1 = __UI_Controls(__UI_Focus).InputViewStart AND __UI_Controls(__UI_Focus).InputViewStart > 1 THEN
|
||||
' __UI_Controls(__UI_Focus).InputViewStart = __UI_Controls(__UI_Focus).InputViewStart - __UI_Controls(__UI_Focus).FieldArea / 2
|
||||
'END IF
|
||||
ELSE
|
||||
__UI_DeleteSelection
|
||||
END IF
|
||||
|
@ -2386,10 +2700,14 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
END SELECT
|
||||
END IF
|
||||
ELSEIF __UI_Focus = 0 AND __UI_DesignMode AND __UI_KeyHit <> 0 THEN 'No buttons will respond while in design mode
|
||||
ELSEIF __UI_DesignMode AND __UI_KeyHit <> 0 THEN 'No buttons will respond while in design mode
|
||||
'But the design menu must respond:
|
||||
IF __UI_ActiveMenu > 0 THEN GOTO HandleDesignMenu
|
||||
|
||||
SELECT CASE __UI_Keyhit
|
||||
CASE ASC("A"), ASC("a")
|
||||
IF __UI_CtrlIsDown THEN
|
||||
ControlSelect:
|
||||
IF __UI_TotalSelectedControls = 1 AND __UI_Controls(__UI_FirstSelectedID).Type = __UI_Type_Frame THEN
|
||||
SelectAllInFrame:
|
||||
DIM ThisContainer AS LONG
|
||||
|
@ -2398,7 +2716,7 @@ SUB __UI_EventDispatcher
|
|||
__UI_TotalSelectedControls = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).Type <> __UI_Type_Frame AND __UI_Controls(i).Type <> __UI_Type_Form AND __UI_Controls(i).Type <> __UI_Type_Font AND __UI_Controls(i).Type <> __UI_Type_MenuBar AND __UI_Controls(i).Type <> __UI_Type_MenuItem AND __UI_Controls(i).Type <> __UI_Type_MenuPanel AND __UI_Controls(i).Type <> __UI_Type_ContextMenu AND __UI_Controls(i).Type <> __UI_Type_MenuItem THEN
|
||||
IF __UI_Controls(i).ParentID = ThisContainer THEN
|
||||
IF __UI_Controls(i).ID > 0 AND __UI_Controls(i).ParentID = ThisContainer THEN
|
||||
__UI_Controls(i).ControlIsSelected = __UI_True
|
||||
__UI_TotalSelectedControls = __UI_TotalSelectedControls + 1
|
||||
IF __UI_TotalSelectedControls = 1 THEN __UI_FirstSelectedID = __UI_Controls(i).ID
|
||||
|
@ -2409,7 +2727,7 @@ SUB __UI_EventDispatcher
|
|||
__UI_TotalSelectedControls = 0
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).Type <> __UI_Type_Frame AND __UI_Controls(i).Type <> __UI_Type_Form AND __UI_Controls(i).Type <> __UI_Type_Font AND __UI_Controls(i).Type <> __UI_Type_MenuBar AND __UI_Controls(i).Type <> __UI_Type_MenuItem AND __UI_Controls(i).Type <> __UI_Type_MenuPanel AND __UI_Controls(i).Type <> __UI_Type_ContextMenu AND __UI_Controls(i).Type <> __UI_Type_MenuItem THEN
|
||||
IF __UI_Controls(i).ParentID = 0 THEN
|
||||
IF __UI_Controls(i).ID > 0 AND __UI_Controls(i).ParentID = 0 THEN
|
||||
__UI_Controls(i).ControlIsSelected = __UI_True
|
||||
__UI_TotalSelectedControls = __UI_TotalSelectedControls + 1
|
||||
IF __UI_TotalSelectedControls = 1 THEN __UI_FirstSelectedID = __UI_Controls(i).ID
|
||||
|
@ -2420,6 +2738,7 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
CASE ASC("C"), ASC("c")
|
||||
IF __UI_CtrlIsDown AND __UI_TotalSelectedControls > 0 THEN
|
||||
ControlCopy:
|
||||
ControlClipboard$ = MKL$(__UI_TotalSelectedControls)
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected AND __UI_Controls(i).Type <> __UI_Type_Frame THEN
|
||||
|
@ -2430,13 +2749,22 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
CASE ASC("V"), ASC("v")
|
||||
IF __UI_CtrlIsDown THEN
|
||||
ControlPaste:
|
||||
Clip$ = _CLIPBOARD$
|
||||
IF Clip$ = "InForm" + CHR$(1) THEN
|
||||
DIM PasteID AS LONG, ThisControl AS LONG, FirstToBeSelected AS LONG
|
||||
DIM TempCanvas AS LONG, TempHelperCanvas AS LONG
|
||||
DIM TempCanvas AS LONG, TempTop AS INTEGER, TempLeft AS INTEGER
|
||||
|
||||
j = CVL(MID$(ControlClipboard$, 1, 4))
|
||||
|
||||
IF __UI_TotalSelectedControls = 1 THEN
|
||||
TempTop = __UI_Controls(__UI_FirstSelectedID).Top + 20
|
||||
TempLeft = __UI_Controls(__UI_FirstSelectedID).Left + 20
|
||||
ELSE
|
||||
TempTop = -1
|
||||
TempLeft = -1
|
||||
END IF
|
||||
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
__UI_Controls(i).ControlIsSelected = __UI_False
|
||||
NEXT
|
||||
|
@ -2449,7 +2777,6 @@ SUB __UI_EventDispatcher
|
|||
IF __UI_Controls(ThisControl).ID > 0 AND __UI_Controls(ThisControl).Type <> __UI_Type_Frame THEN
|
||||
PasteID = __UI_NewControl(__UI_Controls(ThisControl).Type, "", 0, 0, 0, 0, 0)
|
||||
TempCanvas = __UI_Controls(PasteID).Canvas
|
||||
TempHelperCanvas = __UI_Controls(PasteID).HelperCanvas
|
||||
__UI_Controls(PasteID) = __UI_Controls(ThisControl)
|
||||
__UI_Controls(PasteID).ID = 0
|
||||
DO WHILE __UI_GetID(__UI_Controls(PasteID).Name) > 0
|
||||
|
@ -2461,9 +2788,16 @@ SUB __UI_EventDispatcher
|
|||
__UI_Texts(PasteID) = __UI_Texts(ThisControl)
|
||||
__UI_Tips(PasteID) = __UI_Tips(ThisControl)
|
||||
__UI_Controls(PasteID).Canvas = TempCanvas
|
||||
__UI_Controls(PasteID).HelperCanvas = TempHelperCanvas
|
||||
IF __UI_Controls(ThisControl).HelperCanvas <> 0 THEN
|
||||
__UI_Controls(ThisControl).HelperCanvas = _COPYIMAGE(__UI_Controls(ThisControl).HelperCanvas, 32)
|
||||
END IF
|
||||
IF j = 1 AND TempTop + TempLeft >= 0 THEN
|
||||
__UI_Controls(PasteID).Top = TempTop
|
||||
__UI_Controls(PasteID).Left = TempLeft
|
||||
ELSE
|
||||
__UI_Controls(PasteID).Top = __UI_Controls(PasteID).Top + 20
|
||||
__UI_Controls(PasteID).Left = __UI_Controls(PasteID).Left + 20
|
||||
END IF
|
||||
__UI_Controls(PasteID).ControlIsSelected = __UI_True
|
||||
|
||||
IF i = 1 THEN FirstToBeSelected = PasteID
|
||||
|
@ -2476,7 +2810,8 @@ SUB __UI_EventDispatcher
|
|||
END IF
|
||||
END IF
|
||||
CASE 21248 'Delete
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
ControlDelete:
|
||||
FOR i = UBOUND(__UI_Controls) TO 1 STEP -1
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_Controls(i).Type = __UI_Type_Frame THEN
|
||||
'Remove controls from container before deleting it
|
||||
|
@ -2495,26 +2830,42 @@ SUB __UI_EventDispatcher
|
|||
CASE 19200 'Left arrow key
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_ShiftIsDown THEN
|
||||
__UI_Controls(i).Width = __UI_Controls(i).Width - 1
|
||||
ELSE
|
||||
__UI_Controls(i).Left = __UI_Controls(i).Left - 1
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
CASE 19712 'Right arrow key
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_ShiftIsDown THEN
|
||||
__UI_Controls(i).Width = __UI_Controls(i).Width + 1
|
||||
ELSE
|
||||
__UI_Controls(i).Left = __UI_Controls(i).Left + 1
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
CASE 18432 'Up arrow key
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_ShiftIsDown THEN
|
||||
__UI_Controls(i).Height = __UI_Controls(i).Height - 1
|
||||
ELSE
|
||||
__UI_Controls(i).Top = __UI_Controls(i).Top - 1
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
CASE 20480 'Down arrow key
|
||||
FOR i = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(i).ControlIsSelected THEN
|
||||
IF __UI_ShiftIsDown THEN
|
||||
__UI_Controls(i).Height = __UI_Controls(i).Height + 1
|
||||
ELSE
|
||||
__UI_Controls(i).Top = __UI_Controls(i).Top + 1
|
||||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
END SELECT
|
||||
ELSEIF __UI_KeyHit <> 0 THEN 'No control has focus
|
||||
|
@ -2670,12 +3021,18 @@ FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidt
|
|||
END IF
|
||||
|
||||
'Find an empty slot for the new control
|
||||
FOR NextSlot = 1 TO UBOUND(__UI_Controls)
|
||||
IF __UI_Controls(NextSlot).ID = 0 THEN EXIT FOR
|
||||
FOR NextSlot = UBOUND(__UI_Controls) TO 1 STEP -1
|
||||
IF __UI_Controls(NextSlot).ID <> 0 THEN
|
||||
NextSlot = NextSlot + 1
|
||||
EXIT FOR
|
||||
ELSE
|
||||
IF NextSlot = 1 THEN EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
IF NextSlot > UBOUND(__UI_Controls) THEN
|
||||
IF NextSlot = 0 THEN
|
||||
'No empty slots. We must increase __UI_Controls() and its helper arrays
|
||||
NextSlot = UBOUND(__UI_Controls) + 1
|
||||
REDIM _PRESERVE __UI_Controls(0 TO NextSlot + 99) AS __UI_ControlTYPE
|
||||
REDIM _PRESERVE __UI_Captions(1 TO NextSlot + 99) AS STRING
|
||||
REDIM _PRESERVE __UI_TempCaptions(1 TO NextSlot + 99) AS STRING
|
||||
|
@ -2729,7 +3086,6 @@ FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidt
|
|||
LINE (0, uspacing& * 1.5 + 1)-STEP(__UI_Controls(__UI_FormID).Width - 1, 0), __UI_Darken(__UI_Controls(__UI_FormID).BackColor, 80)
|
||||
LINE (0, uspacing& * 1.5 + 2)-STEP(__UI_Controls(__UI_FormID).Width - 1, 0), __UI_Darken(__UI_Controls(__UI_FormID).BackColor, 120)
|
||||
_DEST 0
|
||||
'FIXATTEMPT:__UI_MakeHardwareImageFromCanvas __UI_Controls(__UI_FormID)
|
||||
END IF
|
||||
END IF
|
||||
|
||||
|
@ -2743,12 +3099,16 @@ FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidt
|
|||
__UI_Controls(NextSlot).Canvas = _NEWIMAGE(NewWidth, NewHeight, 32)
|
||||
END IF
|
||||
|
||||
IF __UI_DesignMode THEN
|
||||
'__UI_Controls(NextSlot).ContextMenuID = __UI_GetID("__UI_PreviewMenu")
|
||||
ELSE
|
||||
IF ControlType = __UI_Type_TextBox THEN
|
||||
'Programmer can assign any custom menus to his controls, later
|
||||
'but by default textboxes and other textfields will be
|
||||
'assigned the internal __UI_TextFieldMenu.
|
||||
__UI_Controls(NextSlot).ContextMenuID = __UI_GetID("__UI_TextFieldMenu")
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF ControlType = __UI_Type_ProgressBar THEN
|
||||
__UI_Controls(NextSlot).Max = 100
|
||||
|
@ -2761,16 +3121,15 @@ FUNCTION __UI_NewControl (ControlType AS INTEGER, ControlName AS STRING, NewWidt
|
|||
END IF
|
||||
|
||||
IF ControlType = __UI_Type_Form THEN
|
||||
'Create main window hardware bg:
|
||||
'Create main window bg:
|
||||
__UI_Controls(__UI_FormID).Canvas = _NEWIMAGE(NewWidth, NewHeight, 32)
|
||||
_DEST __UI_Controls(__UI_FormID).Canvas
|
||||
COLOR __UI_Controls(__UI_FormID).ForeColor, __UI_Controls(__UI_FormID).BackColor
|
||||
CLS
|
||||
_DEST 0
|
||||
'FIXATTEMPT:__UI_MakeHardwareImageFromCanvas __UI_Controls(__UI_FormID)
|
||||
END IF
|
||||
|
||||
IF ControlType = __UI_Type_PictureBox OR ControlType = __UI_Type_TextBox OR ControlType = __UI_Type_Frame OR ControlType = __UI_Type_ListBox OR ControlType = __UI_Type_DropdownList THEN
|
||||
IF (ControlType = __UI_Type_PictureBox AND __UI_DesignMode) OR ControlType = __UI_Type_TextBox OR ControlType = __UI_Type_Frame OR ControlType = __UI_Type_ListBox OR ControlType = __UI_Type_DropdownList THEN
|
||||
__UI_Controls(NextSlot).HasBorder = __UI_True
|
||||
END IF
|
||||
|
||||
|
@ -2792,6 +3151,8 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
__UI_TempCaptions(This.ID) = ""
|
||||
__UI_Texts(This.ID) = ""
|
||||
__UI_TempTexts(This.ID) = ""
|
||||
__UI_Tips(This.ID) = ""
|
||||
__UI_TempTips(This.ID) = ""
|
||||
|
||||
IF This.Type = __UI_Type_MenuBar THEN
|
||||
__UI_HasMenuBar = (__UI_FirstMenuBarControl > 0)
|
||||
|
@ -2829,7 +3190,6 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
This.ParentID = 0
|
||||
This.PreviousParentID = 0
|
||||
This.ContextMenuID = 0
|
||||
This.Type = 0
|
||||
This.Name = ""
|
||||
This.Top = 0
|
||||
This.Left = 0
|
||||
|
@ -2837,6 +3197,7 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
This.Height = 0
|
||||
IF This.Canvas <> 0 THEN _FREEIMAGE This.Canvas: This.Canvas = 0
|
||||
IF This.HelperCanvas <> 0 THEN _FREEIMAGE This.HelperCanvas: This.HelperCanvas = 0
|
||||
This.TransparentColor = 0
|
||||
This.Stretch = __UI_False
|
||||
This.PreviousStretch = __UI_False
|
||||
This.BackColor = 0
|
||||
|
@ -2845,6 +3206,7 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
This.SelectedBackColor = 0
|
||||
This.BackStyle = 0
|
||||
This.HasBorder = __UI_False
|
||||
This.Padding = 0
|
||||
This.Align = 0
|
||||
This.BorderColor = 0
|
||||
IF This.Type = __UI_Type_Font THEN
|
||||
|
@ -2852,12 +3214,14 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
ELSE
|
||||
This.Value = 0
|
||||
END IF
|
||||
This.Type = 0
|
||||
This.PreviousValue = 0
|
||||
This.Min = 0
|
||||
This.Max = 0
|
||||
This.Interval = 0
|
||||
This.HotKey = 0
|
||||
This.HotKeyOffset = 0
|
||||
This.HotKeyPosition = 0
|
||||
This.ShowPercentage = __UI_False
|
||||
This.InputViewStart = 0
|
||||
This.PreviousInputViewStart = 0
|
||||
|
@ -2868,10 +3232,25 @@ SUB __UI_DestroyControl (This AS __UI_ControlTYPE)
|
|||
This.ThumbHeight = 0
|
||||
This.ThumbTop = 0
|
||||
This.VScrollbarRatio = 0
|
||||
'This.HasHScrollbar = __UI_False
|
||||
'This.HScrollbarButton2Left = 0
|
||||
'This.HoveringHScrollbarButton = 0
|
||||
'This.LongestLine = 0
|
||||
'This.ThumbWidth = 0
|
||||
'This.ThumbLeft = 0
|
||||
'This.HScrollbarRatio = 0
|
||||
This.Cursor = 0
|
||||
This.PrevCursor = 0
|
||||
This.FieldArea = 0
|
||||
This.PreviousFieldArea = 0
|
||||
This.TextIsSelected = __UI_False
|
||||
This.Multiline = __UI_False
|
||||
This.FirstVisibleLine = 0
|
||||
This.PrevFirstVisibleLine = 0
|
||||
This.CurrentLine = 0
|
||||
This.PrevCurrentLine = 0
|
||||
This.VisibleCursor = 0
|
||||
This.PrevVisibleCursor = 0
|
||||
This.ControlIsSelected = __UI_False
|
||||
This.SelectionLength = 0
|
||||
This.SelectionStart = 0
|
||||
|
@ -3154,16 +3533,9 @@ END SUB
|
|||
SUB __UI_CursorAdjustments
|
||||
DIM i AS LONG, ThisLineStart AS LONG, ThisLineLen AS LONG
|
||||
IF NOT __UI_Controls(__UI_Focus).Multiline THEN
|
||||
IF __UI_Controls(__UI_Focus).Cursor > LEN(__UI_Texts(__UI_Focus)) THEN __UI_Controls(__UI_Focus).Cursor = LEN(__UI_Texts(__UI_Focus))
|
||||
IF __UI_Controls(__UI_Focus).Cursor > __UI_Controls(__UI_Focus).PrevCursor THEN
|
||||
IF __UI_Controls(__UI_Focus).Cursor - __UI_Controls(__UI_Focus).InputViewStart + 2 > __UI_Controls(__UI_Focus).FieldArea THEN __UI_Controls(__UI_Focus).InputViewStart = (__UI_Controls(__UI_Focus).Cursor - __UI_Controls(__UI_Focus).FieldArea) + 2
|
||||
ELSEIF __UI_Controls(__UI_Focus).Cursor < __UI_Controls(__UI_Focus).PrevCursor THEN
|
||||
IF __UI_Controls(__UI_Focus).Cursor < __UI_Controls(__UI_Focus).InputViewStart - 1 THEN __UI_Controls(__UI_Focus).InputViewStart = __UI_Controls(__UI_Focus).Cursor
|
||||
END IF
|
||||
IF __UI_Controls(__UI_Focus).InputViewStart < 1 THEN __UI_Controls(__UI_Focus).InputViewStart = 1
|
||||
IF __UI_Controls(__UI_Focus).InputViewStart > 1 AND LEN(__UI_Texts(__UI_Focus)) < __UI_Controls(__UI_Focus).FieldArea THEN
|
||||
__UI_Controls(__UI_Focus).InputViewStart = 1
|
||||
END IF
|
||||
IF __UI_Controls(__UI_Focus).VisibleCursor >= __UI_Controls(__UI_Focus).Width THEN __UI_Controls(__UI_Focus).InputViewStart = __UI_Controls(__UI_Focus).InputViewStart + __UI_Controls(__UI_Focus).Width / 4
|
||||
IF __UI_Controls(__UI_Focus).VisibleCursor <= 0 THEN __UI_Controls(__UI_Focus).InputViewStart = __UI_Controls(__UI_Focus).InputViewStart - __UI_Controls(__UI_Focus).Width / 4
|
||||
IF __UI_Controls(__UI_Focus).InputViewStart < 0 THEN __UI_Controls(__UI_Focus).InputViewStart = 0
|
||||
ELSE
|
||||
'ThisLineLen = LEN(__UI_GetTextBoxLine(__UI_Focus, __UI_Controls(__UI_Focus).CurrentLine, ThisLineStart))
|
||||
'IF __UI_Controls(__UI_Focus).VisibleCursor > ThisLineLen THEN __UI_Controls(__UI_Focus).VisibleCursor = ThisLineLen
|
||||
|
@ -3357,6 +3729,45 @@ SUB __UI_ReplaceListBoxItem (WhichListBox$, ItemToReplace AS INTEGER, NewText$)
|
|||
LOOP
|
||||
END SUB
|
||||
|
||||
'---------------------------------------------------------------------------------
|
||||
FUNCTION __UI_GetListBoxItem$ (id AS LONG, Item AS LONG)
|
||||
DIM This AS __UI_ControlTYPE, ThisItem AS LONG, FindLF AS LONG, LastLF AS LONG
|
||||
|
||||
This = __UI_Controls(id)
|
||||
|
||||
FindLF = INSTR(__UI_Texts(id), CHR$(13))
|
||||
IF Item = 1 THEN
|
||||
IF FindLF = 0 THEN
|
||||
__UI_GetListBoxItem$ = __UI_Texts(id)
|
||||
EXIT FUNCTION
|
||||
ELSE
|
||||
__UI_GetListBoxItem$ = LEFT$(__UI_Texts(id), FindLF - 1)
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
END IF
|
||||
|
||||
'Scan forward until the desired item is reached or
|
||||
'until the end of the text is found:
|
||||
ThisItem = 2
|
||||
DO
|
||||
LastLF = FindLF
|
||||
FindLF = INSTR(LastLF + 1, __UI_Texts(id), CHR$(13))
|
||||
IF FindLF > 0 THEN
|
||||
IF ThisItem = Item THEN
|
||||
__UI_GetListBoxItem$ = MID$(__UI_Texts(id), LastLF + 1, FindLF - LastLF - 1)
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
ELSE
|
||||
IF ThisItem = Item THEN
|
||||
__UI_GetListBoxItem$ = MID$(__UI_Texts(id), LastLF + 1)
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
ThisItem = ThisItem + 1
|
||||
LOOP
|
||||
'We reached the end of the text. Item seems to not exist.
|
||||
END FUNCTION
|
||||
|
||||
'---------------------------------------------------------------------------------
|
||||
SUB __UI_ListBoxSearchItem (This AS __UI_ControlTYPE)
|
||||
STATIC SearchPattern$, LastListKeyHit AS DOUBLE
|
||||
|
@ -3390,6 +3801,7 @@ SUB __UI_ListBoxSearchItem (This AS __UI_ControlTYPE)
|
|||
DO
|
||||
IF UCASE$(LEFT$(ListItems$(ThisItem%), LEN(SearchPattern$))) = SearchPattern$ THEN
|
||||
This.Value = ThisItem%
|
||||
__UI_ValueChanged This.ID
|
||||
EXIT DO
|
||||
END IF
|
||||
ThisItem% = ThisItem% + 1
|
||||
|
@ -3593,9 +4005,11 @@ SUB __UI_ActivateMenu (This AS __UI_ControlTYPE, SelectFirstItem AS _BYTE)
|
|||
IF This.Type = __UI_Type_MenuBar THEN
|
||||
__UI_Controls(__UI_ActiveMenu).Left = This.Left
|
||||
__UI_Controls(__UI_ActiveMenu).Top = uspacing& * 1.5
|
||||
__UI_ActiveMenuIsContextMenu = __UI_False
|
||||
ELSEIF This.Type = __UI_Type_ContextMenu THEN
|
||||
__UI_Controls(__UI_ActiveMenu).Left = __UI_MouseLeft
|
||||
__UI_Controls(__UI_ActiveMenu).Top = __UI_MouseTop
|
||||
__UI_ActiveMenuIsContextMenu = __UI_True
|
||||
END IF
|
||||
|
||||
'Calculate panel's width and position the menu items
|
||||
|
@ -3652,7 +4066,7 @@ END SUB
|
|||
SUB __UI_MakeHardwareImageFromCanvas (This AS __UI_ControlTYPE)
|
||||
DIM TempCanvas AS LONG
|
||||
|
||||
IF This.ID = 0 OR This.Canvas = 0 THEN EXIT SUB
|
||||
IF This.ID = 0 OR This.Canvas = 0 OR __UI_DesignMode THEN EXIT SUB
|
||||
|
||||
'Convert to hardware images only those that aren't contained in a frame
|
||||
IF This.ParentID = 0 THEN
|
||||
|
@ -3666,6 +4080,8 @@ END SUB
|
|||
SUB __UI_MakeHardwareImage (This AS LONG)
|
||||
DIM TempCanvas AS LONG
|
||||
|
||||
IF __UI_DesignMode THEN EXIT SUB
|
||||
|
||||
TempCanvas = _COPYIMAGE(This, 33)
|
||||
_FREEIMAGE This
|
||||
This = TempCanvas
|
||||
|
|
Loading…
Reference in a new issue