Short description of the TRuler and TTabRuler components (extract from the help file) The TRuler component is a MS style ruler bar, which is used to reflect the layout and scale of a text or graphic window. The value of the Kind property determines if the ruler bar is horizontal or vertical. To determine the virtual unit in which all layout properties are specified, set the BaseExtent and PixelExtent properties to the desired ratio. And to determine the virtual unit in which all scale properties are specified, set the ScaleExtent and ScalePixelExtent properties to the desired ratio. The Size, Min and Max property values determine the size and margins of the virtual window. You can set and scroll the origin position of the virtual window with the BaseOrigin and PixelOrigin properties. The ScaleDivision, ScaleInterval and ScaleUnit property values determine the intervals and numbering of the ruler scale. You can set and scroll the origin position of the scale with the ScaleOrigin property. You can use the MousePos and CursorPos properties to show the positions of the mouse and a text cursor. The TTabRuler component is a ruler bar with complete programmable and user-interactive tabulator support while maintaining all the functionality of the TRuler component. To prepare for tabulator support, set the TabList and EditTabList properties to two variables of the type TTabList. Your application can also set a separate list of tabulators for each paragraph with the TabList property. In the OnTabChange event handler, you write the code that determines how the associated window behaves in response to the user finally adding, moving or removing tabulators in the ruler bar. To save the old tabulators for an undo function, you can write code in the OnTabChanging event handler. In the OnEditTabChange and OnEditTabChanging event handlers, you can write the code that determines how the window behaves in response to the user currently adding, moving or removing tabulators in the ruler bar. You determine the grid spacing for selecting or adding a tabulator when the user clicks in the ruler bar with the value of the TabPrecision property. The value of the TabKind property determines the kind of the tabulator when the user adds one using the mouse. To set a default tabulator you can use the DefaultTabPos property. You can add, delete, and move tabulators using the AddTabPos, DeleteTab, and ChangeTabPos methods. The ClearTabList method clears all the tabulators, and the MoveAllTabsBy method moves all the tabulators in a list of tabulators. The TabCount property contains the number of tabulators in the list. Each tab ruler bar component has a Tabs property that lets you access a particular tabulator by its index in the list of tabulators. To find from a specific text position the next tabulator in a list, use the FindNextTabPos method. You can assign one list of tabulators to another using the AssignTabs method.