End;
, , :
IfAssigned(OnKeyPress) Then OnKeyPress(Self, Key);
If Key #0 Then <onepamop>;
, .. , , :
If Assigned(OnClick) Then OnClick(Self) Else <onepamop>;
. - TMemo, Label 1 Up Down.
.
Type
TNumStrEvent=Procedure(Sender: TObject; Num: Integer) Of Object; // TNumMemo=Class(TMemo) // Private
FOnNumStr: TNumStrEvent; // FNumStr; Integer; // Protected
Procedure DoNumStr(Num: Integer); Dynamic; // Public
Property NumStr: Integer Read FNumStr Write FNumStr; // Property OnNumStr: TNumStrEvent Read FOnNumStr Write FOnNumStr;
End;
FNumStr NumStr .
, TFormI, .
TForm' <:lass(TForm) Labell: TLabel;
Procedure FormCreate(Sender: TObject);
Procedure FormKeyDown(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Public
NumMemo: TNumMemo; // Procedure EventNumStr(Sender: TObject; Num: Integer); // End;
EventNumStr :
Procedure TNumMemo.DoNumStr(Num; Integer);
Begin
IfAssigned(FOnNumStr) Then FOnNumStr(Self, Num); II End;
Procedure TForml.EventNumStr(Sender: TObject; Num: Integer);
Begin
NumMemo.NumStr:=NumMemo.NumStr+Num; //
Labell.Caption:=IntToStr(NumMemo.NumStr); // End;
TNumMemo , OnCreate .
Procedure TForml.FormCreate(Sender: TObject);
Begin
NumMemo:=TNumMemo.Create(Self); // With NumMemo Do Begin Parent:=Self;
SetBounds(10,10,150,150); 11 Name:='NumMemo';
FNumStr:=l; // Visible:=True;
OnNumStr:=EventNumStr; II End;
Forml.KeyPreview;=True; II End;
OnKeyDown "" Up (VK_UP) Down (VKJDOWN) TNumMemo. NumMemo Enter (VK_RETURN).
|
|
Procedure TForml.FormKeyDown(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Begin
Case Key Of
VK_DOWN: If NumMemo.NumStr<NumMemo.Lines.Count+l
Then NumMemo.DoNumStr(l);
VK_UP: IfNumMemo.NumStr>l Then NumMemo.DoNumStr(-l);
VK_RETURN: NumMemo.DoNumStr(l);
End;
End;
Up Down. Labell . OnNumStr:=EventNumStr, . , .
) .
TControl , . . , . .
Const WM_USER1=WM_APP; // Type
TNumMemo=Class(TMemo) Protected
II Procedure WMNumStr(Var Msg: TMessage); Message WM_USER1;
:
Procedure TNumMemo.WMNumStr(Var Msg: TMessage);
Begin