//包文件package PackageDBLibelEdit2;
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD OFF}requires
  rtl,
  vcl,
  EhLib70,
  vcldb,
  dbrtl;
  
contains
  DBLibelEdit2 in 'DBLibelEdit2.pas';end.

解决方案 »

  1.   

    //控件代码
    unit DBLibelEdit2;interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, DBCtrlsEh;type
      TcxDBLibEdit2 = class(TDBEditEh)
      private
        FEditLabel: TBoundLabel;
        FLabelPosition: TLabelPosition;
        FLabelSpacing: Integer;
        procedure SetLabelPosition(const Value: TLabelPosition);
        procedure SetLabelSpacing(const Value: Integer);
      protected
        procedure SetParent(AParent: TWinControl); override;
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;
        procedure SetName(const Value: TComponentName); override;
        procedure CMVisiblechanged(var Message: TMessage);
          message CM_VISIBLECHANGED;
        procedure CMEnabledchanged(var Message: TMessage);
          message CM_ENABLEDCHANGED;
        procedure CMBidimodechanged(var Message: TMessage);
          message CM_BIDIMODECHANGED;
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
        procedure SetupInternalLabel;
        property EditLabel: TBoundLabel read FEditLabel;
        property LabelPosition: TLabelPosition read FLabelPosition write SetLabelPosition;
        property LabelSpacing: Integer read FLabelSpacing write SetLabelSpacing;  end;procedure register;implementation{ TcxDBLibEdit2 }procedure register;
    begin
      RegisterComponents('ddd', [TcxDBLibEdit2]);
    end;constructor TcxDBLibEdit2.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FLabelPosition := lpAbove;
      FLabelSpacing := 3;
      SetupInternalLabel;
    end;procedure TcxDBLibEdit2.CMBidimodechanged(var Message: TMessage);
    begin
      inherited;
      FEditLabel.BiDiMode := BiDiMode;
    end;procedure TcxDBLibEdit2.CMEnabledchanged(var Message: TMessage);
    begin
      inherited;
      FEditLabel.Enabled := Enabled;
    end;procedure TcxDBLibEdit2.CMVisiblechanged(var Message: TMessage);
    begin
      inherited;
      FEditLabel.Visible := Visible;
    end;procedure TcxDBLibEdit2.Notification(AComponent: TComponent;
      Operation: TOperation);
    begin
      inherited Notification(AComponent, Operation);
      if (AComponent = FEditLabel) and (Operation = opRemove) then
        FEditLabel := nil;
    end;procedure TcxDBLibEdit2.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
    begin
      inherited SetBounds(ALeft, ATop, AWidth, AHeight);
      SetLabelPosition(FLabelPosition);
    end;procedure TcxDBLibEdit2.SetLabelPosition(const Value: TLabelPosition);
    var
      P: TPoint;
    begin
      if FEditLabel = nil then exit;
      FLabelPosition := Value;
      case Value of
        lpAbove: P := Point(Left, Top - FEditLabel.Height - FLabelSpacing);
        lpBelow: P := Point(Left, Top + Height + FLabelSpacing);
        lpLeft : P := Point(Left - FEditLabel.Width - FLabelSpacing,
                        Top + ((Height - FEditLabel.Height) div 2));
        lpRight: P := Point(Left + Width + FLabelSpacing,
                        Top + ((Height - FEditLabel.Height) div 2));
      end;
      FEditLabel.SetBounds(P.x, P.y, FEditLabel.Width, FEditLabel.Height);
    end;procedure TcxDBLibEdit2.SetLabelSpacing(const Value: Integer);
    begin
      FLabelSpacing := Value;
      SetLabelPosition(FLabelPosition);
    end;procedure TcxDBLibEdit2.SetName(const Value: TComponentName);
    begin
      if (csDesigning in ComponentState) and ((FEditlabel.GetTextLen = 0) or
         (CompareText(FEditLabel.Caption, Name) = 0)) then
        FEditLabel.Caption := Value;
      inherited SetName(Value);
      if csDesigning in ComponentState then
        Text := '';
    end;procedure TcxDBLibEdit2.SetParent(AParent: TWinControl);
    begin
      inherited SetParent(AParent);
      if FEditLabel = nil then exit;
      FEditLabel.Parent := AParent;
      FEditLabel.Visible := True;
    end;procedure TcxDBLibEdit2.SetupInternalLabel;
    begin
      if Assigned(FEditLabel) then exit;
      FEditLabel := TBoundLabel.Create(Self);
      FEditLabel.FreeNotification(Self);
      //FEditLabel.FocusControl := Self;
    end;end.
      

  2.   

    安装上去了 可是找不到‘ddd’这个面板:(