Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: VCL / WinForms / Controls (https://www.delphipraxis.net/24-library-vcl-winforms-controls/)
-   -   Delphi Subclassing von TRichedit (https://www.delphipraxis.net/14124-subclassing-von-trichedit.html)

Daniel 2. Jan 2004 18:14


Subclassing von TRichedit
 
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)));


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz