unit REdit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TCustomREdit = class(TCustomEdit) private { Private declarations } FAlignment:TAlignment; procedure SetAlignment(Value: TAlignment); protected { Protected declarations } property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; procedure CreateParams(var Params: TCreateParams); override; public { Public declarations } published { Published declarations } end;
TREdit = class(TCustomREdit) published { Published declarations } property Alignment; property Anchors; property AutoSelect; property AutoSize; property BiDiMode; property BorderStyle; property CharCase; property Color; property Constraints; property Ctl3D; property DragCursor; property DragKind; property DragMode; property Enabled; property Font; property HideSelection; property ImeMode; property ImeName; property MaxLength; property OEMConvert; property ParentBiDiMode; property ParentColor; property ParentCtl3D; property ParentFont; property ParentShowHint; property PasswordChar; property PopupMenu; property ReadOnly; property ShowHint; property TabOrder; property TabStop; property Text; property Visible; property OnChange; property OnClick; property OnContextPopup; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; property OnEnter; property OnExit; property OnKeyDown; property OnKeyPress; property OnKeyUp; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDock; property OnStartDrag; end;
procedure Register;
implementation
procedure TCustomREdit.CreateParams(var Params: TCreateParams); const Alignments: array[Boolean, TAlignment] of DWORD = ((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_RIGHT, ES_LEFT, ES_CENTER)); begin inherited CreateParams(Params); with Params do begin Style := Style or Alignments[UseRightToLeftAlignment, FAlignment]; end; end;
procedure TCustomRedit.SetAlignment(Value:TAlignment); begin if FAlignment <> Value then begin FAlignment := Value; RecreateWnd; end; end;
procedure Register; begin RegisterComponents('Samples', [TREdit]); end;
end.
上述只是给初学Delphi控件制作者一点参考,当然不入方家法眼。不足之处,敬请指正。
|