'
' --------------------------------------------------------------------
' QREDEX OBJECT 2002-2005 By Jacques Philippe
'
' EXTENDS QRICHEDIT with COPY, CUT, PASTE, DELETE, SELECT ALL, UNDO,
' SEARCH, REPLACE, SAVEPOSITION, RESTOREPOSITION,
' SETMAXTEXTSIZE(Size), EXTENDSIZELIMIT, CHANGEFONT,
' CHANGEFONTCOLOR, CHANGEBGCOLOR, TOPLINEINDEX, BOTTOLINEINDEX
'
' DOCUMENTATION : TEXT FORMAT
'
' V 0.0.3 2002 : major modification nearly a copy of Psyclops420 work.
' See Yahoo RapidQ Group message #9414
' V 1.0.0 April 2005 added Search, Replace, SavePosition,
' RestorePosition, ChangeFont, ChangeFontColor, ChangeBgColor,
' SetMaxTextSize, ExtendSizeLimit
' V 1.1.0 June 2005 added TopLineIndex, BottomLineIndex
' V 1.2.0 June 2006 Added property Private OS_Version As Long
' to use Sound or Beep if Win9x < 5 or >= 5
' --------------------------------------------------------------------
'
' $INCLUDE "QREDEX.INC" ' Will be the new QRichEdit
'
' Example :
' Create QRED As QRICHEDIT
' Align = alClient
' Font.Name = "courier"
' Font.Size = 8
' Font.Color = &H80FFFF
' Color = &H800000
' ReadOnly = False
' WordWrap = False
' ScrollBars = ssBoth
' HideSelection = False
' PlainText = True
' ExtendSizeLimit
' SetMaxTextSize (4E6)
' End Create
'
' Create mnuChangeFontAndColor AS QMENUITEM
' Caption = "&FONT and COLORS "
' Create mnuChangeFont AS QMENUITEM
' Caption = "&CHANGE FONT "
' OnClick = OnClic_AnyMenu
' End Create
' Create mnuChangeFontColor AS QMENUITEM
' Caption = "&CHANGE FONT COLOR "
' OnClick = OnClic_AnyMenu
' End Create
' Create mnuChangeBgColor AS QMENUITEM
' Caption = "&CHANGE BG_COLOR "
' OnClick = OnClic_AnyMenu
' End Create
' End Create
'
' Case mnuChangeFont.Handle
' .ChangeFont
' Case mnuChangeBgColor.Handle
' .ChangeBgcolor
' Case mnuChangeFontColor.Handle
' .ChangeFontcolor
' Case mnuGetTopBottomLinesIndex.Handle
' ShowMessage (" TOP VISIBLE LINE INDEX = " & Str$(.TopLineIndex) _
' & "\n\nBOTTOM VISIBLE LINE INDEX = " & Str$(.BottomLineIndex))
'
' --------------------------------------------------------------------
' DOCUMENTATION
' =============
' - This Extends QRichEdit so See Component QRichEdit of RapidQ.
' Only Property PopUpMenu Is Involved/Changed
' - After Including the QREDEX.INC file, your QRichEdit will have
' Undo, Copy, Cut, Paste, Delete, Select All, Search, Replace
' in it's Popupmenu. New methods opening DialogBox: ChangeFont,
' ChangeBgColor, ChangeFontColor and SavePosition, RestorePosition,
' TopLineIndex, BottomLineIndex, SetMaxTextSize, ExtendSizeLimit.
'
' IN POPUPMENU : COPY , CUT , PASTE , DELETE , SELECT ALL, UNDO,
' SEARCH, REPLACE .
' Due to RapidQ CodePtr limitation, it was not possible to use
' the Windows Search and Replace tool.
'
' NEW PROPERITIES and METHODS
' ---------------------------
' USEPOPUP allows menu to PopUp when Right Clicking R/W Default = True
'
' TOPLINEINDEX returns the index of the top visible line
'
' BOTTOMLINEINDEX returns the index of the bottom visible line
'
' SAVEPOSITION, RESTOREPOSITION save the index of top_left character
' in the RichEdit and restore it. The Caret position if set,
' is saved and restored too.
'
' If you want to save the position and restore the position by
' your own mean, save the two Public properties
' QRedEx.SavedTopLeft As long and QRedEx.SavedCaretPosition As Long
' somewhere, then restore them before to call the
' QRedEx.RestorePosition method.
'
' Ex : DefInt mySavedTopLeft = QRedEx.SavedTopLeft
' DefInt mySavedCaretPosition = QRedEx.SavedCaretPosition
' ' ...
' QRedEx.SavedTopLeft = mySavedTopLeft
' QRedEx.SavedCaretPosition = mySavedCaretPosition
' QRedEx.RestorePosition
'
' SETMAXTEXTSIZE(Size) method that set the maximum RichEdit text size
'
' EXTENDSIZELIMIT method that sets the maximum RichEdit text size
' to the value of the public property QRedEx.RichTextSizeLimit.
' QRedEx.RichTextLimitSize is initialised at 1 MegaByte.
'
' CHANGEFONT, CHANGEFONTCOLOR, CHANGEBGCOLOR
' Method that will call a DialogBox that will set the
' QRedEx.Font, QRedEx.Font.color and QRedEx BackGroundColor
'
' OTHER PUBLIC PROPERTIES OF QREDEX
' UsePopup AS LONG PROPERTY SET Set_Popup
' RichTextSizeLimit As Long
' SavedTopLeft As Long
' SavedBottomRight As Long
' SavedCaretPosition As Long
' ptPoint As String * 20 ' Used with Window Message EM_GETRECT, EM_CHARFROMPOS
' ' Search Form
' frmSearch As QForm
' edtSearchFor As QEdit
' lblSearchFor AS QLabel
' btnSearch As QButton
' chkSearchCaseS As QCheckBox
' chkSearchWholeWordsOnly As QCheckBox
' ' Replace Form
' frmReplace As QForm
' lblToBeReplaced AS QLabel
' edtToBeReplaced As QEdit
' lblReplacedBy AS QLabel
' edtReplacedBy As QEdit
' btnReplace As QButton
' btnFindNext As QButton
' btnReplaceAll As QButton
' chkReplaceCaseS As QCheckBox
' chkReplaceWholeWordsOnly As QCheckBox
' chkReplaceUp As QCheckBox
'
' The search and replace forms are public so you can modify any of
' their components properties or call any of their Methods.
' --------------------------------------------------------------------
'