Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#1

Subclassing von TRichedit

  Alt 2. Jan 2004, 18:14
Von unserem User "Assarbad":


Ermoeglicht es, dass im RichEdit nur noch gescrollt werden kann. Markieren und andere Dinge sind schlichtweg unmoeglich. (Getestet mit einem ReadOnly RichEdit).

Delphi-Quellcode:
function RichEditSubclassWndProc(
  hwnd: HWND;
  uMsg: UINT;
  wParam: WPARAM;
  lParam: LPARAM
  ): LRESULT; stdcall;
begin
  case uMsg of
    WM_MBUTTONDBLCLK,
      WM_RBUTTONDBLCLK,
      WM_LBUTTONDBLCLK,
      WM_MBUTTONUP,
      WM_RBUTTONUP,
      WM_LBUTTONUP,
      WM_MBUTTONDOWN,
      WM_RBUTTONDOWN,
      WM_LBUTTONDOWN,
      WM_NCRBUTTONDBLCLK,
      WM_NCRBUTTONUP,
      WM_NCRBUTTONDOWN,
      WM_NCMBUTTONDBLCLK,
      WM_NCMBUTTONUP,
      WM_NCMBUTTONDOWN,
      WM_KEYDOWN,
      WM_KEYUP,
      WM_CHAR,
      WM_HOTKEY,
      WM_KILLFOCUS,
      WM_SETFOCUS,
      WM_SETCURSOR:
      Result := 0;
  else
    Result := CallWindowProc(
      Pointer(GetWindowLong(hwnd, GWL_USERDATA)), hwnd, uMsg, wParam, lParam);
  end;
end;
und wer sich fragt wie man das Subcalssing macht ... so zB:

Delphi-Quellcode:
        SetWindowLong(GetDlgItem(hwnd, IDC_RICHEDIT_AGREEMENT),
          GWL_USERDATA,
          SetWindowLong(GetDlgItem(hwnd, IDC_RICHEDIT_AGREEMENT), GWL_WNDPROC, Integer(@RichEditSubclassWndProc)));
Daniel R. Wolf
  Mit Zitat antworten Zitat