delphi 复合控件开发是如何将子控件的属性全部暴露到主控件上面 在开发复合控件的时候,希望有个简单的方法将不同子控件的属性全部显示出来,并且可以设置使用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在哪里设置呢?在Create里面设置了不行的,没有反应的。 把父类的属性显示出来就可以.到父类中把你想要的属性下到published下就可以了.就可以在设计器实现设计. 我也有同样的问题,请指教,错在哪里unit LabelDBEdit;interfaceuses SysUtils, Classes, Controls,DBCtrls,StdCtrls,ExtCtrls,Messages,Forms;type TLabelDBEdit = class(TWinControl) private { Private declarations } FDBedit:TDBEdit; FLabel:TLabel; FBevel:TBevel; procedure FSetDBEdit(AValue:TDBEdit); procedure FSetLabel(AValue:TLabel); protected { Protected declarations } procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure WMSize(var Msg: TMessage);message WM_SIZE; public { Public declarations } constructor Create(AOwner: TComponent);override; destructor Destroy;override; published { Published declarations } property EditLabel:TLabel read FLabel write FSetLabel; property EditDBEdit:TDBEdit read FDBedit write FSetDBEdit; end;procedure Register;implementationprocedure Register;begin RegisterComponents('ErpControl', [TLabelDBEdit]);end;constructor TLabelDbEdit.Create(Aowner:TComponent);begin inherited; Self.Width:=200; self.Height:=17; FDBedit:=TDBEdit.Create(nil); with FDBedit do begin Parent:=Self; AutoSize:=false; Height:=17; BorderStyle:=bsNone; BevelKind:=bkFlat; Left:=self.Left - Width; SetSubComponent(True); end; FLabel:=TLabel.Create(nil); FLabel.Parent:=Self; FBevel:=TBevel.Create(nil); with FBevel do begin Parent:=Self; Shape:=bsTopLine; Height:=1; end; FLabel.Caption:='LabelEdit'; FLabel.Left:=0; FLabel.SetSubComponent(True);end;destructor TLabelDBedit.Destroy;begin FDBedit.Free; FLabel.Free; FBevel.Free; inherited Destroy;end;procedure TLabelDBEdit.WMSize(var msg:TMessage);begin Height:=17; FLabel.Left:=0; FDBedit.Left:=self.Width - FDBedit.Width ; with FBevel do begin Top:=16; Left:=0; Width:=self.Width; end;end;procedure TLabelDBEdit.Notification(AComponent: TComponent; Operation: TOperation);begin inherited Notification(AComponent, Operation); if (Operation = opRemove) then if AComponent = EditLabel then FLabel:=nil else if AComponent = EditDBEdit then FDBedit:=nil;end;//procedure TLabelDBEDit.FSetDBEdit(AValue:TDBEdit);begin FDBedit:=AValue; if Avalue <> nil then begin FDBedit.SetSubComponent(True); FDBedit.FreeNotification(Self); end;end;procedure TLabelDBEDit.FSetLabel(AValue:TLabel);begin FLabel:=AValue; if Avalue <> nil then begin FLabel.SetSubComponent(true); FLabel.FreeNotification(Self); end;end;end. editDBedit及editlabel 属性出不来,在 object inspector中, editDBedit及editlabel, 但属性栏为空, 不知道错在哪,请各位指教 连接释放问题! Delphi 2005中文帮助文档 有关字符代在码的执行, Delphi 写的在线文本编辑器怎么得到? 系统的启动与关闭! SQL Explorer输入的SQL语句语法是什么样的?比如这个问题。。。。。 速求Ghost的CD-Key,Thank! 怎么配置代理服务? 多层系统中,表中级联字段无法写入? 高分!高手请进!!! 关于inherited; 关于将Word文档转化为bmp图片的问题?
到父类中把你想要的属性下到published下就可以了.
就可以在设计器实现设计.
SysUtils, Classes, Controls,DBCtrls,StdCtrls,ExtCtrls,Messages,Forms;type
TLabelDBEdit = class(TWinControl)
private
{ Private declarations }
FDBedit:TDBEdit;
FLabel:TLabel;
FBevel:TBevel;
procedure FSetDBEdit(AValue:TDBEdit);
procedure FSetLabel(AValue:TLabel);
protected
{ Protected declarations }
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure WMSize(var Msg: TMessage);message WM_SIZE;
public
{ Public declarations }
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
published
{ Published declarations }
property EditLabel:TLabel read FLabel write FSetLabel;
property EditDBEdit:TDBEdit read FDBedit write FSetDBEdit;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('ErpControl', [TLabelDBEdit]);
end;constructor TLabelDbEdit.Create(Aowner:TComponent);
begin
inherited;
Self.Width:=200;
self.Height:=17;
FDBedit:=TDBEdit.Create(nil);
with FDBedit do
begin
Parent:=Self;
AutoSize:=false;
Height:=17;
BorderStyle:=bsNone;
BevelKind:=bkFlat;
Left:=self.Left - Width;
SetSubComponent(True);
end; FLabel:=TLabel.Create(nil);
FLabel.Parent:=Self; FBevel:=TBevel.Create(nil);
with FBevel do
begin
Parent:=Self;
Shape:=bsTopLine;
Height:=1;
end; FLabel.Caption:='LabelEdit';
FLabel.Left:=0;
FLabel.SetSubComponent(True);
end;destructor TLabelDBedit.Destroy;
begin
FDBedit.Free;
FLabel.Free;
FBevel.Free;
inherited Destroy;
end;procedure TLabelDBEdit.WMSize(var msg:TMessage);
begin
Height:=17;
FLabel.Left:=0;
FDBedit.Left:=self.Width - FDBedit.Width ;
with FBevel do
begin
Top:=16;
Left:=0;
Width:=self.Width;
end;
end;procedure TLabelDBEdit.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) then
if AComponent = EditLabel then
FLabel:=nil
else if AComponent = EditDBEdit then
FDBedit:=nil;
end;
//
procedure TLabelDBEDit.FSetDBEdit(AValue:TDBEdit);
begin
FDBedit:=AValue;
if Avalue <> nil then
begin
FDBedit.SetSubComponent(True);
FDBedit.FreeNotification(Self);
end;
end;procedure TLabelDBEDit.FSetLabel(AValue:TLabel);
begin
FLabel:=AValue;
if Avalue <> nil then
begin
FLabel.SetSubComponent(true);
FLabel.FreeNotification(Self);
end;
end;end.
editDBedit及editlabel 属性出不来,在 object inspector中, editDBedit及editlabel, 但属性栏为空, 不知道错在哪,请各位指教