Q&A

  • 에디트박스에서 오른쪽 팝업메뉴 막는방법
안녕하세요.
제목 그대로 입니다.
기본적인 팝업 메뉴가 '잘라내기, 붙히기,..' 등이 있는데
이걸 사용하고 싶지 않습니다.
아무일도 일어나지 않게..
그럼 답변 부탁드립니다.
3  COMMENTS
  • Profile
    조성필 2002.02.25 06:46
    ^^v
  • Profile
    Black}{ole 2002.02.24 07:44
    안녕하세요. ^^a

    Edit에 서브클래스를 해서 WM_RBUTTONDOWN 메세지를 무시해 버리는방법으로 구현해봤습니다.

    참고하세요.


    unit uMain;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TMainForm = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        FEditInstance: Pointer;
        FDefEditProc: Pointer;
      public
        procedure EditWndProc(var Message: TMessage);
      end;

    var
      MainForm: TMainForm;

    implementation

    {$R *.dfm}

    procedure TMainForm.EditWndProc(var Message: TMessage);
    begin
      with Message do
      begin
        case Msg of
          WM_RBUTTONDOWN: Exit;
        end;
        Result := CallWindowProc(FDefEditProc, Edit1.Handle, Msg, WParam, LParam);
      end;
    end;

    procedure TMainForm.FormCreate(Sender: TObject);
    begin
      FEditInstance := MakeObjectInstance(EditWndProc);
      FDefEditProc := Pointer(GetWindowLong(Edit1.Handle, GWL_WNDPROC));
      SetWindowLong(Edit1.Handle, GWL_WNDPROC, LongInt(FEditInstance));
    end;

    procedure TMainForm.FormDestroy(Sender: TObject);
    begin
      SetWindowLong(Edit1.Handle, GWL_WNDPROC, Longint(FDefEditProc));
      FreeObjectInstance(FEditInstance);
    end;

    end.



    그럼..20000.
  • Profile
    양석용 2002.02.24 16:59
    흐 form 에서여.. PopupMenu1 을 올려 놓고 .. 물론 PopupMenu1에는 메뉴가 하나두 없습니다. 그리고는 edit의 PopupMenu 프로퍼티를  PopupMenu1
    로 고칩니다.
    키득.. 제가 보기에는 Ctrl+C Ctrl+V를 막는 질문 같은데..