请问怎么编写自定义的控件,最好能有例子,我试了几次都成功都没成功! 请问怎么编写自定义的控件,最好能有例子,我试了几次都成功都没成功! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unit DemoVcl;interfaceuses SysUtils, Classes, Controls;type TDemoVcl = class(TWinControl) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end;procedure Register;implementationprocedure Register;begin RegisterComponents('Public', [TDemoVcl]);end;end. 制作VCL组件1.从合适的基类进行继承TWinControl 是窗体类的基类,有HandleTGraphControl 是图形类的基类,无HandleTComponent 是完全空白的基类,一般用于非可视组件或他们的派生类2.加入构件的属性、方法和事件属性、方法和事件,一部分是继承的,一部分是自己写的.3.安装组件Components -> Install Components unit MyEdit;interfaceuses 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; TMyEdit = 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;implementationprocedure TCustomREdit.CreateParams(var Params: TCreateParams);const Alignments: array[Boolean, TAlignment] of DWORD = ((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_LEFT,ES_RIGHT, 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. unit Chart1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart;type TChart1 = class(TChart) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end;procedure Register;implementationprocedure Register;begin RegisterComponents('Samples', [TChart1]);end;end. 这个问题,建议你还是找书看看为好!因为书上一般都能讲得很详细,而CSDN上的网友任凭他有多热情,恐怕都很难在此讲清你这个问题! 请教Delphi调用C 动态库问题 如何实现鼠标点击托盘图标 Delphi中格式化硬盤-->繼續求解??? Hook到FindNextFile后要怎么做? 我想做一个倒计时的表,请大家帮忙!!!!!! 求问 TistView和ListView的列生成问题 请帮忙!!!这个两个字符串到底应该怎么转换???? 如果回答Delphi串口操作的实现 串口数据接收时延问题 一个小问题如何把DBGRID的每个字段长度固定住,不随实际表中的长度变化而变化 DBGrid与滑轮 report 报表中如何在每一页上都显示打印表头
SysUtils, Classes, Controls;type
TDemoVcl = class(TWinControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Public', [TDemoVcl]);
end;end.
TWinControl 是窗体类的基类,有Handle
TGraphControl 是图形类的基类,无Handle
TComponent 是完全空白的基类,一般用于非可视组件
或他们的派生类
2.加入构件的属性、方法和事件
属性、方法和事件,一部分是继承的,一部分是自己写的.
3.安装组件
Components -> Install Components
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; TMyEdit = 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;implementationprocedure TCustomREdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[Boolean, TAlignment] of DWORD =
((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_LEFT,ES_RIGHT, 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.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, TeeProcs, TeEngine, Chart;type
TChart1 = class(TChart)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Samples', [TChart1]);
end;end.
因为书上一般都能讲得很详细,
而CSDN上的网友任凭他有多热情,恐怕都很难在此
讲清你这个问题!