EdDial.pas
上传用户:rftzhifu
上传日期:2007-07-05
资源大小:18k
文件大小:24k
源码类别:

TAPI编程

开发平台:

Delphi

  1. {*******************************************************}
  2. { EdDial V 1.00 - 04 Jun 1996 (freeware)                }
  3. { Dial a phone number using the win'95 dialer           }
  4. {                                                       }
  5. { Olivier DEVUE                                         }
  6. { olidev@msn.com                                        }
  7. {                                                       }
  8. {*******************************************************}
  9. unit EdDial;
  10. interface
  11. uses
  12.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  13.   StdCtrls, Buttons, Menus;
  14.   function tapiRequestMakeCall(lpszDestAddress, lpszAppName, lpszCalledParty, lpszComment: LPCSTR): DWORD; stdcall;
  15.   
  16.   { =========================== TCustomEditAndBtn ============================}
  17. type
  18.   TCustomEditAndBtn = class(TWinControl)
  19.   private
  20.     { D閏larations private }
  21.     FButtonEnabled : boolean;
  22.     FButtonHint: string;
  23.     FSpeedButton: TSpeedButton;
  24.     FEdit: TEdit;
  25.     FOnButtonClick: TNotifyEvent;
  26.     FOnButtonMouseDown: TMouseEvent;
  27.     FOnButtonMouseMove: TMouseMoveEvent;
  28.     FOnButtonMouseUp: TMouseEvent;
  29.     FOnEnter: TNotifyEvent;
  30.     FOnChange: TNotifyEvent;
  31.     FOnExit: TNotifyEvent;
  32.     FOnClick: TNotifyEvent;
  33.     FOnDblClick: TNotifyEvent;
  34.     FOnDragDrop: TDragDropEvent;
  35.     FOnDragOver: TDragOverEvent;
  36.     FOnEndDrag: TEndDragEvent;
  37.     FOnKeyDown: TKeyEvent;
  38.     FOnKeyPress: TKeyPressEvent;
  39.     FOnKeyUp: TKeyEvent;
  40.     FOnMouseDown: TMouseEvent;
  41.     FOnMouseMove: TMouseMoveEvent;
  42.     FOnMouseUp: TMouseEvent;
  43.     FOnStartDrag: TStartDragEvent;
  44.     FButtonShortCut: TShortCut;
  45.     function GetAutoSelect : boolean;
  46.     procedure SetAutoSelect(b: boolean);
  47.     function GetButtonCaption : String;
  48.     procedure SetButtonCaption(s: String);
  49.     procedure SetButtonEnabled(b: boolean);
  50.     function GetGlyph: TBitmap;
  51.     procedure SetGlyph(b: TBitmap);
  52.     function GetButtonHint : String;
  53.     procedure SetButtonHint(s: String);
  54.     function GetNumGlyphs: TNumGlyphs;
  55.     procedure SetNumGlyphs(n: TNumGlyphs);
  56.     function GetButtonVisible : boolean;
  57.     procedure SetButtonVisible(b : boolean);
  58.     function GetCharCase: TEditCharCase;
  59.     procedure SetCharCase(c: TEditCharCase);
  60.     function GetColor: TColor;
  61.     procedure SetColor(c: TColor);
  62.     function GetCtl3d: boolean;
  63.     procedure SetCtl3d(b: boolean);
  64.     function GetDragCursor: TCursor;
  65.     procedure SetDragCursor(c: TCursor);
  66.     function GetDragMode: TDragMode;
  67.     procedure SetDragMode(d: TDragMode);
  68.     function GetFont: TFont;
  69.     procedure SetFont(f: TFont);
  70.     function GetHideSelection: boolean;
  71.     procedure SetHideSelection(b: boolean);
  72.     function GetMaxLength: integer;
  73.     procedure SetMaxLength(i: integer);
  74.     function GetOEMConvert: boolean;
  75.     procedure SetOEMConvert(b: boolean);
  76.     function GetParentColor: boolean;
  77.     procedure SetParentColor(b: boolean);
  78.     function GetParentCtl3D: boolean;
  79.     procedure SetParentCtl3D(b: boolean);
  80.     function GetParentFont: boolean;
  81.     procedure SetParentFont(b: boolean);
  82.     function GetParentShowHint: boolean;
  83.     procedure SetParentShowHint(b: boolean);
  84.     function GetPasswordChar: char;
  85.     procedure SetPasswordChar(c: char);
  86.     function GetReadOnly: boolean;
  87.     procedure SetReadOnly(b: boolean);
  88.     function GetShowHint: boolean;
  89.     procedure SetShowHint(b: boolean);
  90.     function GetTabStop: boolean;
  91.     procedure SetTabStop(b: boolean);
  92.     function GetText : String;
  93.     procedure SetText(s: String);
  94.   protected
  95.     { D閏larations protected }
  96.     property AutoSelect: boolean read GetAutoSelect write SetAutoSelect;
  97.     property ButtonCaption: string read GetButtonCaption write SetButtonCaption;
  98.     property ButtonEnabled: boolean read FButtonEnabled write SetButtonEnabled;
  99.     property ButtonGlyph: TBitmap read GetGlyph write SetGlyph;
  100.     property ButtonHint: string read GetButtonHint write SetButtonHint;
  101.     property ButtonNumGlyphs: TNumGlyphs read GetNumGlyphs write SetNumGlyphs;
  102.     property ButtonShortCut: TShortCut read FButtonShortCut write FButtonShortCut;
  103.     property ButtonVisible: boolean read GetButtonVisible write SetButtonVisible;
  104.     property CharCase: TEditCharCase read GetCharCase write SetCharCase;
  105.     property Color: TColor read GetColor write SetColor;
  106.     property Ctl3d: boolean read GetCtl3d write SetCtl3d;
  107.     property DragCursor: TCursor read GetDragCursor write SetDragCursor;
  108.     property DragMode: TDragMode read GetDragMode write SetDragMode;
  109.     property Enabled;
  110.     property Font: TFont read GetFont write SetFont;
  111.     property HideSelection: boolean read GetHideSelection write SetHideSelection;
  112.     property MaxLength: integer read GetMaxLength write SetMaxLength;
  113.     property OEMConvert: boolean read GetOEMConvert write SetOEMConvert;
  114.     property ParentColor: boolean read GetParentColor write SetParentColor;
  115.     property ParentCtl3D: boolean read GetParentCtl3D write SetParentCtl3D;
  116.     property ParentFont: boolean read GetParentFont write SetParentFont;
  117.     property ParentShowHint: boolean read GetParentShowHint write SetParentShowHint;
  118.     property PasswordChar: char read GetPasswordChar write SetPasswordChar;
  119.     property PopupMenu;
  120.     property ReadOnly: boolean read GetReadOnly write SetReadOnly;
  121.     property ShowHint: boolean read GetShowHint write SetShowHint;
  122.     property TabOrder;
  123.     property TabStop: boolean read GetTabStop write SetTabStop;
  124.     property Text: string read GetText write SetText;
  125.     property Visible;
  126.     procedure ButtonClick(Sender : TObject); virtual;
  127.     procedure ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
  128.     procedure ButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); virtual;
  129.     procedure ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
  130.     procedure Change(Sender : TObject); virtual;
  131.     procedure Click(Sender : TObject); virtual;
  132.     procedure DblClick(Sender : TObject); virtual;
  133.     procedure DragDrop(Sender, Source: TObject; X, Y: Integer); virtual;
  134.     procedure DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); virtual;
  135.     procedure EndDrag(Sender, Target: TObject; X, Y: Integer); virtual;
  136.     procedure Enter(Sender : TObject); virtual;
  137.     procedure Exit(Sender : TObject); virtual;
  138.     procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
  139.     procedure KeyPress(Sender: TObject; var Key: Char); virtual;
  140.     procedure KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
  141.     procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
  142.     procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); virtual;
  143.     procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
  144.     procedure StartDrag(Sender: TObject; var DragObject: TDragObject); virtual;
  145.     property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
  146.     property OnButtonMouseDown: TMouseEvent read FOnButtonMouseDown write FOnButtonMouseDown;
  147.     property OnButtonMouseMove: TMouseMoveEvent read FOnButtonMouseMove write FOnButtonMouseMove;
  148.     property OnButtonMouseUp: TMouseEvent read FOnButtonMouseUp write FOnButtonMouseUp;
  149.     property OnChange: TNotifyEvent read FOnChange write FOnChange;
  150.     property OnClick: TNotifyEvent read FOnClick write FOnClick;
  151.     property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
  152.     property OnDragDrop: TDragDropEvent read FOnDragDrop write FOnDragDrop;
  153.     property OnDragOver: TDragOverEvent read FOnDragOver write FOnDragOver;
  154.     property OnEndDrag: TEndDragEvent read FOnEndDrag write FOnEndDrag;
  155.     property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;
  156.     property OnExit: TNotifyEvent read FOnExit write FOnExit;
  157.     property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;
  158.     property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress;
  159.     property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp;
  160.     property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
  161.     property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
  162.     property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
  163.     property OnStartDrag: TStartDragEvent read FOnStartDrag write FOnStartDrag;
  164.     procedure WMSize( var Message: TWMSize ); message WM_SIZE;
  165.   public
  166.     { D閏larations public }
  167.     constructor Create( AOwner: TComponent ); override;
  168.     destructor Destroy; override;
  169.     procedure SetName(const NewName: TComponentName); override;
  170.   end;
  171.   { ============================== TEditAndBtn ===============================}
  172.   TEditAndBtn = class(TCustomEditAndBtn)
  173.   published
  174.     { D閏larations published }
  175.     property AutoSelect;
  176.     property ButtonCaption;
  177.     property ButtonEnabled;
  178.     property ButtonGlyph;
  179.     property ButtonHint;
  180.     property ButtonNumGlyphs;
  181.     property ButtonShortCut;
  182.     property ButtonVisible;
  183.     property CharCase;
  184.     property Color;
  185.     property Ctl3d;
  186.     property DragCursor;
  187.     property DragMode;
  188.     property Enabled;
  189.     property Font;
  190.     property HideSelection;
  191.     property MaxLength;
  192.     property OEMConvert;
  193.     property ParentColor;
  194.     property ParentCtl3D;
  195.     property ParentFont;
  196.     property ParentShowHint;
  197.     property PasswordChar;
  198.     property PopupMenu;
  199.     property ReadOnly;
  200.     property ShowHint;
  201.     property TabOrder;
  202.     property TabStop;
  203.     property Text;
  204.     property Visible;
  205.     property OnButtonClick;
  206.     property OnButtonMouseDown;
  207.     property OnButtonMouseMove;
  208.     property OnButtonMouseUp;
  209.     property OnChange;
  210.     property OnClick;
  211.     property OnDblClick;
  212.     property OnDragDrop;
  213.     property OnDragOver;
  214.     property OnEndDrag;
  215.     property OnEnter;
  216.     property OnExit;
  217.     property OnKeyDown;
  218.     property OnKeyPress;
  219.     property OnKeyUp;
  220.     property OnMouseDown;
  221.     property OnMouseMove;
  222.     property OnMouseUp;
  223.     property OnStartDrag;
  224.   end;
  225.   TEditAndDialBtnKind = (dkCustom, dkStandard);
  226.   TBeforeDialEvent = procedure (Sender : TObject; var CalledParty: string) of object;
  227.   { ============================= TEditAndDial ===============================}
  228.   TEditAndDial = class(TCustomEditAndBtn)
  229.   private
  230.     { D閏larations private }
  231.     FButtonKind: TEditAndDialBtnKind;
  232.     FBeforeDial: TBeforeDialEvent;
  233.     FCalledParty: array [0..255] of char;    
  234.     function GetKind: TEditAndDialBtnKind;
  235.     procedure SetKind(Value: TEditAndDialBtnKind);
  236.     function GetGlyph: TBitmap;
  237.     procedure SetGlyph(b: TBitmap);
  238.   published
  239.     { D閏larations published }
  240.     property AutoSelect;
  241.     property ButtonEnabled;
  242.     property ButtonGlyphDial: TBitmap read GetGlyph write SetGlyph;
  243.     property ButtonKind: TEditAndDialBtnKind read GetKind write SetKind;
  244.     property ButtonHint;
  245.     property ButtonNumGlyphs;
  246.     property ButtonShortCut;
  247.     property ButtonVisible;
  248.     property CharCase;
  249.     property Color;
  250.     property Ctl3d;
  251.     property DragCursor;
  252.     property DragMode;
  253.     property Enabled;
  254.     property Font;
  255.     property HideSelection;
  256.     property MaxLength;
  257.     property OEMConvert;
  258.     property ParentColor;
  259.     property ParentCtl3D;
  260.     property ParentFont;
  261.     property ParentShowHint;
  262.     property PopupMenu;
  263.     property ReadOnly;
  264.     property ShowHint;
  265.     property TabOrder;
  266.     property TabStop;
  267.     property Text;
  268.     property Visible;
  269.     property BeforeDial: TBeforeDialEvent read FBeforeDial write FBeforeDial;
  270.     property OnButtonMouseDown;
  271.     property OnButtonMouseMove;
  272.     property OnButtonMouseUp;
  273.     property OnChange;
  274.     property OnClick;
  275.     property OnDblClick;
  276.     property OnDragDrop;
  277.     property OnDragOver;
  278.     property OnEndDrag;
  279.     property OnEnter;
  280.     property OnExit;
  281.     property OnKeyDown;
  282.     property OnKeyPress;
  283.     property OnKeyUp;
  284.     property OnMouseDown;
  285.     property OnMouseMove;
  286.     property OnMouseUp;
  287.     property OnStartDrag;
  288.   protected
  289.     { D閏larations protected }
  290.     procedure LoadDialBitmap; virtual;
  291.     procedure EvBeforeDial(Sender : TObject; var CalledParty: string); virtual;
  292.   public
  293.     { D閏larations public }
  294.     constructor Create( AOwner: TComponent ); override;
  295.     destructor Destroy; override;
  296.     procedure ButtonClick(Sender : TObject); override;
  297.   end;
  298. procedure Register;
  299. implementation
  300. {$R EDDIAL}
  301. function tapiRequestMakeCall; external 'TAPI32.DLL' name 'tapiRequestMakeCall';
  302. constructor TCustomEditAndBtn.Create( AOwner: TComponent );
  303. begin
  304.   inherited Create(AOwner);
  305.   Width:=121;
  306.   FEdit := TEdit.Create(self);
  307.   FEdit.Visible := true;
  308.   FEdit.Parent := Self;
  309.   FEdit.Text:=Self.name;
  310.   FEdit.Refresh;
  311.   FEdit.OnChange:=Change;
  312.   FEdit.OnClick:=Click;
  313.   FEdit.OnDblClick:=DblClick;
  314.   FEdit.OnDragDrop:=DragDrop;
  315.   FEdit.OnDragOver:=DragOver;
  316.   FEdit.OnEndDrag:=EndDrag;
  317.   FEdit.OnEnter:=Enter;
  318.   FEdit.OnExit:=Exit;
  319.   FEdit.OnKeyDown:=KeyDown;
  320.   FEdit.OnKeyPress:=KeyPress;
  321.   FEdit.OnKeyUp:=KeyUp;
  322.   FEdit.OnMouseDown:=MouseDown;
  323.   FEdit.OnMouseMove:=MouseMove;
  324.   FEdit.OnMouseUp:=MouseUp;
  325.   FEdit.OnStartDrag:=StartDrag;
  326.   FSpeedButton := TSpeedButton.Create(self);
  327.   FSpeedButton.Visible := true;
  328.   FSpeedButton.Parent := self;
  329.   FSpeedButton.Refresh;
  330.   FSpeedButton.OnClick:=ButtonClick;
  331.   FSpeedButton.OnMouseDown:=ButtonMouseDown;
  332.   FSpeedButton.OnMouseMove:=ButtonMouseMove;
  333.   FSpeedButton.OnMouseUp:=ButtonMouseUp;
  334.   FButtonEnabled:=true;
  335. end;
  336. procedure TCustomEditAndBtn.Change(Sender : TObject);
  337. begin
  338.   if Assigned(FOnChange) then
  339.     FOnChange(self);
  340. end;
  341. procedure TCustomEditAndBtn.Click(Sender : TObject);
  342. begin
  343.   if Assigned(FOnClick) then
  344.     FOnClick(self);
  345. end;
  346. procedure TCustomEditAndBtn.DblClick(Sender : TObject);
  347. begin
  348.   if Assigned(FOnDblClick) then
  349.     FOnDblClick(self);
  350. end;
  351. procedure TCustomEditAndBtn.DragDrop(Sender, Source: TObject; X, Y: Integer);
  352. begin
  353.   if Assigned(FOnDragDrop) then
  354.     FOnDragDrop(self,Source,X,Y);
  355. end;
  356. procedure TCustomEditAndBtn.DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  357. begin
  358.   if Assigned(FOnDragOver) then
  359.     FOnDragOver(self,Source,X,Y,State,Accept);
  360. end;
  361. procedure TCustomEditAndBtn.EndDrag(Sender, Target: TObject; X, Y: Integer);
  362. begin
  363.   if Assigned(FOnEndDrag) then
  364.     FOnEndDrag(self,Target,X,Y);
  365. end;
  366. procedure TCustomEditAndBtn.Enter(Sender : TObject);
  367. begin
  368.   if Assigned(FOnEnter) then
  369.     FOnEnter(self);
  370. end;
  371. procedure TCustomEditAndBtn.Exit(Sender : TObject);
  372. begin
  373.   if Assigned(FOnExit) then
  374.     FOnExit(self);
  375. end;
  376. procedure TCustomEditAndBtn.KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  377. var
  378.   skShift: TShiftState;
  379.   skKey: Word;
  380. begin
  381.   ShortCutToKey(FButtonShortCut,skKey,skShift);
  382.   if (Key=skKey) and (Shift=skShift) then
  383.   begin
  384.     { Shorcut}
  385.     ButtonClick(Sender);
  386.   end;
  387.   if Assigned(FOnKeyDown) then
  388.     FOnKeyDown(self,Key,Shift);
  389. end;
  390. procedure TCustomEditAndBtn.KeyPress(Sender: TObject; var Key: Char);
  391. begin
  392.   if Assigned(FOnKeyPress) then
  393.     FOnKeyPress(self,Key);
  394. end;
  395. procedure TCustomEditAndBtn.KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  396. begin
  397.   if Assigned(FOnKeyUp) then
  398.     FOnKeyUp(self,Key,Shift);
  399. end;
  400. procedure TCustomEditAndBtn.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  401. begin
  402.   if Assigned(FOnMouseDown) then
  403.     FOnMouseDown(self,Button,Shift,X,Y);
  404. end;
  405. procedure TCustomEditAndBtn.MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  406. begin
  407.   if Assigned(FOnMouseMove) then
  408.     FOnMouseMove(self,Shift,X,Y);
  409. end;
  410. procedure TCustomEditAndBtn.MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  411. begin
  412.   if Assigned(FOnMouseUp) then
  413.     FOnMouseUp(self,Button,Shift,X,Y);
  414. end;
  415. procedure TCustomEditAndBtn.StartDrag(Sender: TObject; var DragObject: TDragObject);
  416. begin
  417.   if Assigned(FOnStartDrag) then
  418.     FOnStartDrag(self,DragObject);
  419. end;
  420. procedure TCustomEditAndBtn.ButtonClick(Sender : TObject);
  421. begin
  422.   if Assigned(FOnButtonClick) then
  423.     FOnButtonClick(self);
  424. end;
  425. procedure TCustomEditAndBtn.ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  426. begin
  427.   if Assigned(FOnButtonMouseDown) then
  428.     FOnButtonMouseDown(self,Button,Shift,X,Y);
  429. end;
  430. procedure TCustomEditAndBtn.ButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  431. begin
  432.   if Assigned(FOnButtonMouseMove) then
  433.     FOnButtonMouseMove(self,Shift,X,Y);
  434. end;
  435. procedure TCustomEditAndBtn.ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  436. begin
  437.   if Assigned(FOnButtonMouseUp) then
  438.     FOnButtonMouseUp(self,Button,Shift,X,Y);
  439. end;
  440. destructor TCustomEditAndBtn.Destroy;
  441. begin
  442.   FEdit:=nil;
  443.   FSpeedButton:=nil;
  444.   inherited Destroy;
  445. end;
  446. procedure TCustomEditAndBtn.WMSize( var Message: TWMSize );
  447. begin
  448.   if Height<24 then Height:=24;
  449.   FEdit.Top:=0;
  450.   FEdit.Height:=Height;
  451.   FEdit.Width:=Width-30;
  452.   FEdit.Left:=0;
  453.   FEdit.Refresh;
  454.   FSpeedButton.Top:=0;
  455.   FSpeedButton.Height:=Height;
  456.   FSpeedButton.Width:=24;
  457.   FSpeedButton.Left:=Width-24;
  458.   FSpeedButton.Refresh;
  459. end;
  460. { =================================== Property ===============================}
  461. function TCustomEditAndBtn.GetButtonCaption: String;
  462. begin
  463.   result:=FSpeedButton.Caption;
  464. end;
  465. procedure TCustomEditAndBtn.SetButtonCaption(s: String);
  466. begin
  467.   FSpeedButton.Caption:=s;
  468. end;
  469. function TCustomEditAndBtn.GetButtonHint: String;
  470. begin
  471.   result:=FSpeedButton.Hint;
  472. end;
  473. procedure TCustomEditAndBtn.SetButtonHint(s: String);
  474. begin
  475.   FSpeedButton.Hint:=s;
  476. end;
  477. function TCustomEditAndBtn.GetTabStop: boolean;
  478. begin
  479.   result:=FEdit.TabStop;
  480. end;
  481. procedure TCustomEditAndBtn.SetTabStop(b: boolean);
  482. begin
  483.   FEdit.TabStop:=b;
  484. end;
  485. function TCustomEditAndBtn.GetText: String;
  486. begin
  487.   result:=FEdit.text;
  488. end;
  489. procedure TCustomEditAndBtn.SetText(s : String);
  490. begin
  491.   FEdit.text:=s;
  492. end;
  493. function TCustomEditAndBtn.GetAutoSelect : boolean;
  494. begin
  495.   result:=FEdit.AutoSelect;
  496. end;
  497. procedure TCustomEditAndBtn.SetAutoSelect(b : boolean);
  498. begin
  499.   FEdit.AutoSelect:=b;
  500. end;
  501. function TCustomEditAndBtn.GetDragCursor: TCursor;
  502. begin
  503.   result:=FEdit.DragCursor;
  504. end;
  505. procedure TCustomEditAndBtn.SetDragCursor(c: TCursor);
  506. begin
  507.   FEdit.DragCursor:=c;
  508. end;
  509. function TCustomEditAndBtn.GetDragMode: TDragMode;
  510. begin
  511.   result:=FEdit.DragMode;
  512. end;
  513. procedure TCustomEditAndBtn.SetDragMode(d: TDragMode);
  514. begin
  515.   FEdit.DragMode:=d;
  516. end;
  517. function TCustomEditAndBtn.GetCtl3d : boolean;
  518. begin
  519.   result:=FEdit.Ctl3d;
  520. end;
  521. procedure TCustomEditAndBtn.SetCtl3d(b : boolean);
  522. begin
  523.   FEdit.Ctl3d:=b;
  524. end;
  525. function TCustomEditAndBtn.GetGlyph: TBitmap;
  526. begin
  527.   result:=FSpeedButton.Glyph;
  528. end;
  529. procedure TCustomEditAndBtn.SetGlyph(b: TBitmap);
  530. begin
  531.   FSpeedButton.Glyph:=b;
  532. end;
  533. function TCustomEditAndBtn.GetNumGlyphs: TNumGlyphs;
  534. begin
  535.   result:=FSpeedButton.NumGlyphs;
  536. end;
  537. procedure TCustomEditAndBtn.SetNumGlyphs(n: TNumGlyphs);
  538. begin
  539.   FSpeedButton.NumGlyphs:=n;
  540. end;
  541. function TCustomEditAndBtn.GetHideSelection : boolean;
  542. begin
  543.   result:=FEdit.HideSelection;
  544. end;
  545. procedure TCustomEditAndBtn.SetHideSelection(b : boolean);
  546. begin
  547.   FEdit.HideSelection:=b;
  548. end;
  549. procedure TCustomEditAndBtn.SetMaxLength(i: integer);
  550. begin
  551.   FEdit.MaxLength:=i;
  552. end;
  553. function TCustomEditAndBtn.GetMaxLength : integer;
  554. begin
  555.   result:=FEdit.MaxLength;
  556. end;
  557. function TCustomEditAndBtn.GetOEMConvert: boolean;
  558. begin
  559.   result:=FEdit.OEMConvert;
  560. end;
  561. procedure TCustomEditAndBtn.SetOEMConvert(b: boolean);
  562. begin
  563.   FEdit.OEMConvert:=b;
  564. end;
  565. function TCustomEditAndBtn.GetParentColor: boolean;
  566. begin
  567.   result:=FEdit.ParentColor;
  568. end;
  569. procedure TCustomEditAndBtn.SetParentColor(b: boolean);
  570. begin
  571.   FEdit.ParentColor:=b;
  572. end;
  573. function TCustomEditAndBtn.GetParentCtl3D: boolean;
  574. begin
  575.   result:=FEdit.ParentCtl3D;
  576. end;
  577. procedure TCustomEditAndBtn.SetParentCtl3D(b: boolean);
  578. begin
  579.   FEdit.ParentCtl3D:=b;
  580. end;
  581. function TCustomEditAndBtn.GetParentFont: boolean;
  582. begin
  583.   result:=FEdit.ParentFont;
  584. end;
  585. procedure TCustomEditAndBtn.SetParentFont(b: boolean);
  586. begin
  587.   FEdit.ParentFont:=b;
  588.   FSpeedButton.ParentFont:=b;
  589. end;
  590. function TCustomEditAndBtn.GetParentShowHint: boolean;
  591. begin
  592.   result:=FEdit.ParentShowHint;
  593. end;
  594. procedure TCustomEditAndBtn.SetParentShowHint(b: boolean);
  595. begin
  596.   FEdit.ParentShowHint:=b;
  597.   FSpeedButton.ParentShowHint:=b;
  598. end;
  599. function TCustomEditAndBtn.GetPasswordChar: char;
  600. begin
  601.   result:=FEdit.PasswordChar;
  602. end;
  603. procedure TCustomEditAndBtn.SetPasswordChar(c: char);
  604. begin
  605.   FEdit.PasswordChar:=c;
  606. end;
  607. function TCustomEditAndBtn.GetReadOnly: boolean;
  608. begin
  609.   result:=FEdit.ReadOnly;
  610. end;
  611. procedure TCustomEditAndBtn.SetReadOnly(b: boolean);
  612. begin
  613.   FEdit.ReadOnly:=b;
  614. end;
  615. function TCustomEditAndBtn.GetShowHint : boolean;
  616. begin
  617.   result:=FEdit.ShowHint;
  618. end;
  619. procedure TCustomEditAndBtn.SetShowHint(b : boolean);
  620. begin
  621.   FSpeedButton.ShowHint:=b;
  622.   FEdit.ShowHint:=b;
  623. end;
  624. function TCustomEditAndBtn.GetCharCase: TEditCharCase;
  625. begin
  626.   result:=FEdit.CharCase;
  627. end;
  628. procedure TCustomEditAndBtn.SetCharCase(c: TEditCharCase);
  629. begin
  630.   FEdit.CharCase:=c;
  631. end;
  632. function TCustomEditAndBtn.GetColor : TColor;
  633. begin
  634.   result:=FEdit.Color;
  635. end;
  636. procedure TCustomEditAndBtn.SetColor(c : TColor);
  637. begin
  638.   FEdit.Color:=c;
  639. end;
  640. procedure TCustomEditAndBtn.SetButtonEnabled(b : boolean);
  641. begin
  642.   FButtonEnabled:=b;
  643.   FSpeedButton.Enabled:=b;
  644. end;
  645. function TCustomEditAndBtn.GetFont : TFont;
  646. begin
  647.   result:=FEdit.Font;
  648. end;
  649. procedure TCustomEditAndBtn.SetFont(f : TFont);
  650. begin
  651.   FEdit.Font:=f;
  652. end;
  653. function TCustomEditAndBtn.GetButtonVisible : boolean;
  654. begin
  655.   result:=FSpeedButton.Visible;
  656. end;
  657. procedure TCustomEditAndBtn.SetButtonVisible(b : boolean);
  658. begin
  659.   FSpeedButton.Visible:=b;
  660. end;
  661. procedure TCustomEditAndBtn.SetName(const NewName: TComponentName);
  662. begin
  663.   inherited SetName(NewName);
  664.   if FEdit.Text='' then
  665.   begin
  666.     FEdit.Text:=NewName;
  667.     FEdit.Refresh;
  668.   end;
  669. end;
  670. {================================ TEditAndDial ===============================}
  671. constructor TEditAndDial.Create( AOwner: TComponent );
  672. begin
  673.   inherited Create(AOwner);
  674.   LoadDialBitmap;
  675.   FButtonKind:=dkStandard;
  676.   StrPCopy(FCalledParty,'');
  677. end;
  678. destructor TEditAndDial.Destroy;
  679. begin
  680.   inherited Destroy;
  681. end;
  682. procedure TEditAndDial.EvBeforeDial(Sender: TObject; var CalledParty: string);
  683. begin
  684.   CalledParty:='';
  685.   if Assigned(FBeforeDial) then
  686.     FBeforeDial(self, CalledParty);
  687. end;
  688. procedure TEditAndDial.LoadDialBitmap;
  689. begin
  690.   ButtonGlyph.Handle:=LoadBitmap(hInstance,'DIAL');
  691.   ButtonNumGlyphs:=2;
  692. end;
  693. function TEditAndDial.GetKind: TEditAndDialBtnKind;
  694. begin
  695.   result:=FButtonKind;
  696. end;
  697. procedure TEditAndDial.SetKind(Value: TEditAndDialBtnKind);
  698. begin
  699.   if Value=dkStandard then
  700.     LoadDialBitmap;
  701.   FButtonKind:=Value;
  702. end;
  703. procedure TEditAndDial.ButtonClick(Sender : TObject);
  704. var
  705.   lResult: longint;
  706.   PhoneNumber: array [0..255] of char;
  707.   Called: array [0..255] of char;
  708.   CalledParty: string;
  709. begin
  710.   inherited ButtonClick(Sender);
  711.   evBeforeDial(Self,CalledParty);
  712.   StrPCopy(PhoneNumber,Text);
  713.   StrPCopy(Called,CalledParty);
  714.   lResult:=tapiRequestMakeCall(PhoneNumber,'',Called,'');
  715.   if Assigned(FOnButtonClick) then
  716.     FOnButtonClick(self);
  717. end;
  718. function TEditAndDial.GetGlyph: TBitmap;
  719. begin
  720.   result:=ButtonGlyph;
  721. end;
  722. procedure TEditAndDial.SetGlyph(b: TBitmap);
  723. begin
  724.   ButtonGlyph:=b;
  725.   SetKind(dkCustom);
  726. end;
  727. procedure Register;
  728. begin
  729.   RegisterComponents('Supplement', [TEditAndBtn, TEditAndDial]);
  730. end;
  731. end.