'
' --------------------------------------------------------------------
' QREDEX OBJECT           January 2002             By Jacques Philippe
'
' EXTENDS  QRICHEDIT   with   COPY , CUT , PASTE , DELETE , SELECT ALL
'                             and  UNDO
' COMPONENT CODE
'
' V 0.0.3  major modification : nearly a copy of Psyclops420 work.
'          See Yahoo RapidQ Group message #9414
' --------------------------------------------------------------------
'
Declare Function QRED_SendMessage Lib "user32" Alias "SendMessageA" (hwnd As Long, _
                                        wMsg As Long, wParam As Long, lParam As Long) As Long
'
Type QREDEX Extends QRichEdit
    With QREDEX
      PUBLIC:
        UsePopup AS LONG PROPERTY SET Set_Popup
      PRIVATE:
        QRED_PopUpMenu As QPopUpMenu
        mnuUndo As QMenuItem
        mnuSep_1 As QMenuItem
        mnuCut AS QMenuItem
        mnuCopy AS QMenuItem
        mnuPaste AS QMenuItem
        mnuDelete AS QMenuItem
        mnuSep_2 As QMenuItem
        mnuSelectAll As QMenuItem
'
'       ON POP UP
'       ---------
        Event QRED_PopUpMenu.OnPopUp
            DefInt boolSelLength, boolReadOnly, boolLenClip
            If .selLength Then boolSelLength = 1
            If .readOnly Then
                boolReadOnly = 0
            Else
                boolReadOnly = 1
            End If
            ClipBoard.Open
                If Len(ClipBoard.Text) Then boolLenClip = 1
            ClipBoard.Close
            .mnuCut.Enabled = boolSelLength And boolReadOnly And boolLenClip
            .mnuPaste.Enabled = boolReadOnly And boolLenClip
            .mnuDelete.Enabled = boolSelLength And boolReadOnly
            .mnuCopy.Enabled = boolSelLength
            .mnuSelectAll.Enabled = 1 ' True
            .mnuUndo.Enabled = QRED_SendMessage(.Handle, &HC6, 0, 0)
            If .ReadOnly Then
                .mnuCut.Visible = 0 ' False
                .mnuPaste.Visible = 0 ' False
                .mnuDelete.Visible = 0 ' False
                .mnuUndo.Visible = 0 ' False
            Else
                .mnuCut.Visible = 1 ' True
                .mnuPaste.Visible = 1 ' True
                .mnuDelete.Visible = 1 ' True
                .mnuUndo.Visible = 1 ' True
            End If
        End Event
'
'       mnu UNDO
'       --------
        SUB OnClic_mnuUndo
            SendMessage(.Handle, &HC7, 0, 0)
        END SUB
'
'       mnu CUT
'       -------
        Sub OnClic_mnuCut
            .CutToClipBoard
        End Sub
'
'       mnu PASTE
'       ---------
        Sub OnClic_mnuPaste
            .PasteFromClipBoard
        End Sub
'
'       mnu COPY
'       --------
        Sub OnClic_mnuCopy
            .CopyToClipBoard
        End Sub
'
'       mnu DELETE
'       ----------
        Sub OnClic_mnuDelete
            SendMessage (.Handle, &H100, &H2E, 0)
        End Sub
'
'       mnu SELECTALL
'       -------------
        Sub OnClic_mnuSelectAll
             .SelectAll
        End Sub
'
'       PROPERTY  UsePopUp
'       ------------------
        PUBLIC:
        PROPERTY SET Set_Popup(Use as long)
             .QRED_PopUpMenu.AutoPopup = Use
        END PROPERTY
        PRIVATE:
'
        CONSTRUCTOR
            PopUpMenu = QREDEX.QRED_PopUpMenu
            mnuUnDo.Caption = "&Undo"
            mnuUndo.OnClick = QREDEX.OnClic_mnuUndo
            mnuSep_1.Caption = "-"
            mnuCut.Caption = "Cu&t"
            mnuCut.OnClick = QREDEX.OnClic_mnuCut
            mnuCopy.Caption = "&Copy"
            mnuCopy.OnClick = QREDEX.OnClic_mnuCopy
            mnuPaste.Caption = "&Paste"
            mnuPaste.OnClick = QREDEX.OnClic_mnuPaste
            mnuDelete.Caption = "&Delete"
            mnuDelete.OnClick = QREDEX.OnClic_mnuDelete
            mnuSep_2.Caption = "-"
            mnuSelectAll.Caption = "Select &All"
            mnuSelectAll.OnClick = QREDEX.OnClic_mnuSelectAll
            QRED_PopUpMenu.AddItems QREDEX.mnuUndo,QREDEX.mnuSep_1,QREDEX.mnuCopy, _
                        QREDEX.mnuCut, QREDEX.mnuDelete, QREDEX.mnuPaste, _
                        QREDEX.mnuSep_2, QREDEX.mnuSelectAll
        END CONSTRUCTOR

    End With
End Type
'
$UNDEF QRICHEDIT
$DEFINE QRICHEDIT QREDEX
'
' --------------------------------------------------------------------
'
