Reflection Desktop VBA Guide
HowTos / Change Themes to Control Look and Feel
In This Topic
    Change Themes to Control Look and Feel
    In This Topic

    You can use a macro to change the look and feel of a session. You can also programmatically change display elements such as the screen color, font, and cursor. Some examples of changing these elements include:

    This sample shows how to load a theme and change the cursor, font, and background color of the session.

    If you prefer to run macros in pre-configured sessions instead of creating your own sessions, you can download the VBA Sample Sessions and open the change-themes.rd3x (IBM) and change-themes.rdox files (Open Systems). The download package contains everything you need to run the macros in these files. See Download the VBA Sample Sessions.

    To run this sample

    1. In a terminal session, open the Visual Basic Editor and insert a module in the session project folder.
    2. Copy the code into the module code window and then press F5 to run the macro.
      This article contains tabbed content that is specific to each terminal type. Be sure the tab for your Which Terminal Type are you Using? is selected.

      Change colors, fonts, and cursor
      Copy Code
      Public Sub ChangeLookAndFeel()
       
          'Declare and set a Themefont object
          Dim font As Attachmate_Reflection_Objects_Emulation_IbmHosts.ThemeFont
          Set font = ThisIbmTerminal.Theme.font
                                     
        
          'Declare and set a Themecolor object
          Dim color As Attachmate_Reflection_Objects_Emulation_IbmHosts.ThemeColor
          Set color = ThisIbmTerminal.Theme.ThemeColor
      
          'Set AutofontSize to false to allow resizing of font
          font.AutoFontSize = False
          font.FONTSIZE = 10
        
          'Set the cursorShape
          cursor.CursorShape = CursorShapeOption_Underline
      
          'Make the ruler line visible and set the type to crosshair
          cursor.RulerCursorVisible = True
          cursor.RulerCursorType = RulerCursorTypeOption_Crosshair
          'Set the screen Background color
          color.BackgroundColor = RGB(0, 0, 0)
       
          'Save the changes in a new theme to prevent Reflection from requesting to save new theme
          ThisIbmTerminal.Theme.SaveAs (Environ$("USERPROFILE") & "\Documents\Micro Focus\Reflection\Themes\myTheme.themex")
          
      End Sub
      
      Change colors, fonts, and cursor
      Copy Code
      'This macro changes the screen color, font size, and cursor shape.
      Public Sub ChangeThemeAndfontSize()
       
          'Declare and set a font object
          Dim font As ThemeFont
          Set font = ThisTerminal.Theme.font
       
          'Declare and set a color object
          Dim color As ThemeColor
          Set color = ThisTerminal.Theme.color
       
          'Declare and set a cursor object
          Dim cursor As ThemeCursor
          Set cursor = ThisTerminal.Theme.cursor
         
          'Set AutofontSize to false to allow resizing of font
          font.AutoFontSize = False
          font.FONTSIZE = 10
       
          'Change to a cursor with a vertical bar shape
          cursor.Parent.DisplayEnhancements.ColorCursor = False
          cursor.CursorShape = CursorShapeOption_Block
          'Change the screen foreground and background colors
          'First, get the integer that is associated with the screen foreground and background colors
          foregroundColorInt = color.GetForegroundColorAsInt(TextColorMappingAttribute_Plain)
          backgroundColorInt = color.GetBackgroundColorAsInt(TextColorMappingAttribute_Plain)
       
          'Then set the screen foreground and background colors by changing the color map
          color.SetColorRGB foregroundColorInt, 250, 250, 200
          color.SetColorRGB backgroundColorInt, 150, 150, 120
        
          'Save the changes in a new theme to prevent Reflection from requesting to save new theme
          ThisTerminal.Theme.SaveAs (Environ$("USERPROFILE") & "\Documents\Micro Focus\Reflection\Themes\myTheme.themex")
            
      End Sub
      

    Concepts

    The Theme object contains the ThemeFont, ThemeColor, and ThemeCursor objects. You get access to these objects through the Theme object. 

    Another approach for changing theme properties is to load an entire theme:

    Load a theme
    Copy Code
    'Load a theme
    ThisIbmTerminal.Theme.Load (Environ$("USERPROFILE") & "\Documents\Micro Focus\Reflection\Themes\myTheme.themex")
    
    Load a Theme
    Copy Code
    'Load a theme
        ThisTerminal.Theme.Load (Environ$("USERPROFILE") & "\Documents\Micro Focus\Reflection\Themes\myTheme.themex")
    

    You can run these macros automatically when certain screens are recognized or when specific events occur. For example, after a user selects a program, you could indicate which program is running by changing the background color on the first screen of the program. (See Controlling Macro Execution and Using Reflection Events.)

    See Also