🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1031

Delphi�Զ��岿�����壩

#1031
From: �ϵ�
Date: Sun, 26 Apr 1998 00:00
134 lines
10679 bytes
������: wdsq (Ʒ������), ����: Visual
��  ��: Delphi�Զ��岿�����壩 (ת��)
����վ: ���е����������� (Mon Dec 30 15:01:02 1996)

;37m�� ��������ת���� 2mProgramming 7m������ ��
�� ԭ����2m zhjjs7m ��� ��m
    3. �����Լ����¼�
��������ȫ�µ��¼�������Ǻ��ټ�ġ�ֻ�е���������Ϊ��ȫ��ͬ���κ������¼�����
Ҫ�������¼����������¼�һ���������裺
  ������ �����¼�
��  ���� ���崦��������
����  �� �����¼�
  ������ �����¼�

    �� �����¼�
���������Լ����¼�Ҫ�����ĵ�һ���ؼ��ǣ���ʹ�ñ�׼�¼�ʱ�㲻��Ҫ������ʲô����
�¼�����ijЩ�¼�����������Ȼ�ġ����磺һ��MouseDown�¼������û������������
ʱ����Windows��Ӧ�÷���WM_LBUTTONDOWN��Ϣ���ӵ���Ϣ��һ����������
���MouseDown�����������ε����û���OnMouseDown�¼������̴��롣������Щ��
��ȴ������ô������������ġ����磺���и���һ��OnChange�¼����ɱ��������������
�����������㰴���������еĸı䡣�������¼�ʱ�������ʹ��������ķ������
��ȷ���¼���
����������TControl����WM_LBUTTONDOWN��Ϣ�ķ�����DoMouseDown��˽�е�ʵ
�ַ��������ṩ��һ��Ĵ������Һ��а�ť�ķ���������Windows��Ϣ�IJ���ת��Ϊ
MouseDown������ֵ��

    type 
      TControl = class(TComponent) 
      private 
        FOnMouseDown: TMouseEvent;
        procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton;
                                  Shift: TShiftState);
        procedure WMLButtonDown(var Message: TWMLButtonDown); 
                                    message M_LBUTTONDOWN; 
      protected 
      procedure MouseDown(Button: TMouseButton; Shift: TShiftState; 
                             X, Y: Integer); dynamic; 
    end; 

    procedure TControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
    begin
      if Assigned(FOnMouseDown) then 
        FOnMouseDown(Self, Button, Shift, X, Y);              { �����¼������� } 
    end;

    procedure TControl.DoMouseDown(var Message: TWMMouse; Button: TMouseButton;
                                        Shift: ShiftState); 
    begin
      with Message do
      MouseDown(Button, KeysToShiftState(Keys) + Shift, XPos, YPos); { ���ö�̬���� } 
    end;

    procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);
    begin 
      inherited; { perform default handling } 
      if csCaptureMouse in ControlStyle then 
        MouseCapture := True; 
      if csClickEvents in ControlStyle then 
        Include(FControlState, csClicked); 
      DoMouseDown(Message, mbLeft, []); { �����mouse-down ���� } 
    end;

�������������飭״̬�仯���û�����������ʱ�������������ͬ�ģ��������΢��ͬ��
�û������¼���������Windows��Ϣ������״̬�ı��¼�Ҳ��Windows��Ϣ�йأ�������
Ҳ�������Ա仯��������������ӵ�ж��Զ����¼���������ȫ���ơ�
    �� ���崦��������
����һ������������¼�����Ҫ�����¼���α����?�����Ҫ�����¼������̵����͡�
�ڴ��������£�������¼������̵������Ǽ򵥵�֪ͨ���ͣ�TNotifyEvent�����Ѷ�
����¼����͡�
����֪ͨ�¼�ֻ�Ǹ������ض����¼������ˣ���û������ʲôʱ���ʲô�ط���֪ͨ�¼�
ʹ��ʱֻ��һ��TObject���͵IJ���ò�����Sender��Ȼ������֪ͨ�¼��Ĵ����̶�
֪����ʲô����¼�����ͷ������Ǹ����������磺Click�¼���֪ͨ���͡�����дClick
�¼��Ĵ�����ʱ����֪������Click�¼�������ĸ��������㰴�ˡ�֪ͨ�¼��ǵ����
�̡�û���ṩ�������ơ�
������ijЩ����£�ֻ֪��ʲô�¼�����ͷ������Ǹ������Dz����ġ������¼�����
�¼�����������Ҫ֪���û������ĸ�������������£���Ҫ�¼������̰��й���
���ı�Ҫ��Ϣ�IJ�������¼�������Ϊ����Ӧ��Ϣ����ô���ݸ��¼��IJ��������ֱ��
������Ϣ����
������Ϊ�����¼������̶��ǹ�̣����Դ��¼��������з�����Ϣ��Ψһ������ͨ��
var�����Զ��岿����������Щ��Ϣ�������û��¼�������ִ�к��Ƿ����������
����
�������磬���еĻ����¼�(OnKeyDown��OnKeyUp��OnKeyPressed)ͨ����Ϊkey��var
����ݼ�ֵ��Ϊ��ʹӦ�ó��򿴼�����¼��еIJ�ͬ�ļ��¼������̿��Ըı�key
����ֵ��
    �� �����¼�
����һ����������¼������̵����ͣ����Ҫ׼�������¼��ķ���ָ������ԡ�Ϊ����
�û���������¼��Ĺ��ܣ�Ӧ�����¼�һ������������֣����һ�Ҫ�벿�������Ƶ�����
����Ʊ���һ�¡�
����Delphi�����б�׼�¼�����ƶ��ԡ�On����ͷ����ֻ�dz��ڷ��㣬����������ǿ��
��Object Inspector�ǿ��������������������Ƿ����¼������еķ���ָ�����Զ�������
�¼������������¼�ҳ�С�
    �� �����¼�
����һ��˵������ý����ü������¼��ϡ�����˵�ڲ����д���һ���鷽���������û���
�¼������̺��ṩ�κ�ȱʡ���?�������¼�ʱ��Ӧ�����������㣺
������ ����������¼�
    �� �û��ܸ���ȱʡ����

    ��������ʹ���¼������̲�������������֡�����˵���Զ��岿�������ܲ�
�����������û��¼������̵���Ӧ��ʵ���ϣ����¼�������Ӧ�����������¼������
��һ��Ľ��

����������Ӧ��Ҫ���û������ⷽʽʹ�����ǡ���Ȼһ�����¼�������Ӧ�������¼���
����һ��������ô�����û��¼������̵Ĵ���Ӧ��������

����if Assigned(OnClick) then OnClick(Self);
       { ִ��ȱʡ���� }

    ��Ӧ��������Ĵ��룺

    if Assigned(OnClick) then 
      OnClick(Self)
    else
        ��;  { ִ��ȱʡ���� }

��������ijЩ������¼����û�������ȡ��ȱʡ��������ɾ�����е���Ӧ��Ϊ֧���û�ʵ
�����ֹ��ܣ�����Ҫ����var������¼������̣������¼������̷���ʱ���ij��ֵ��
���¼������������¼�����������ͬ���á���Ϊ���¼������̲���ı��κ�var����
ֵ������ȱʡ���������ڵ��ÿ��¼������̺���
���������ڴ���Key-Press�¼����û�����ͨ��var����key��ֵ����Ϊ���ַ�(#0)��ѹ
�Ʋ�����ȱʡ���?�������£�

����if Assigned(OnkeyPress) then OnkeyPress(Self key);
    if key <> #0 then   { ִ��ȱʡ���� } ;

    ʵ�ʵĴ��뽫�������в�ͬ����Ϊ��ֻ���?����Ϣ���������߼�����ͬ�ġ���ȱʡ
����£������ȵ����κ��û�������¼������̣�Ȼ��ִ�б�׼���?����û����¼�
�����̽�key��Ϊ�գ��򲿼����ȱʡ���?

--
m;37m�� ��Դ:�����е����������� s1000e.whnet.edu.cn��[FROM: 202.197.4.156]m

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: a507yjh.nju.edu]
Technical Details
Message-ID: <3OG0aC$t90@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,cc9b005b1ddc947f,start
X-Google-Attributes: gidfc86e,public
From: mendy.bbs@bbs.nju.edu.cn (�ϵ�)
Subject: Delphi�Զ��岿�����壩 
Date: 1998/04/26
Message-ID: <3OG0aC$t90@bbs.nju.edu.cn>
X-Deja-AN: 348030615
X-Filename: Programming/M.893585100.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program