⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class_71702_image.~pas

📁 自己编写的在Delphi下进行图像开发的空间可以向
💻 ~PAS
字号:
unit  Class_71702_image;

interface

uses
    SysUtils,   Classes,   StdCtrls,   Controls,   ExtCtrls,   Messages,   Windows;

type
    TTxtImage   =   class(TImage)
    private
      FImageLabel:TBoundLabel;
      FLabelPosition:TLabelPosition;
      FLabelSpacing:Integer;
      procedure   SetLabelPosition(const   Value:TLabelPosition);
      procedure   SetFLabelSpacing(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
      constructor   Create(AOwner:TComponent);   override;   //   构造函数
      procedure   SetBounds(ALeft,ATop,AWidth,AHeight:Integer);override;
      procedure   SetupInternalLabel;
    published
      property   Align;
      property   Anchors;
      property   AutoSize;
      property   Center;
      property   Constraints;
      property   DragCursor;
      property   DragKind;
      property   DragMode;
      property   Enabled;
      property   ImageLabel:TBoundLabel   read   FImageLabel;
      property   IncrementalDisplay;
      property   LabelPosition:TLabelPosition   read   FLabelPosition   write   SetLabelPosition;
      property   LabelSpacing:Integer   read   FLabelSpacing   write   SetFLabelSpacing;
      property   ParentShowHint;
      property   Picture;
      property   PopupMenu;
      property   Proportional;
      property   ShowHint;
      property   Stretch;
      property   Transparent;
      property   Visible;
      property   OnClick;
      property   OnContextPopup;
      property   OnDblClick;
      property   OnDragDrop;
      property   OnDragOver;
      property   OnEndDock;
      property   OnEndDrag;
      property   OnMouseDown;
      property   OnMouseMove;
      property   OnMouseUp;
      property   OnProgress;
      property   OnStartDock;
      property   OnStartDrag;
    end;

procedure   Register;

implementation

procedure   Register;
begin
  RegisterComponents('Additional',   [TTxtImage]);
end;   
    
  {   TTxtImage   }   
    
  procedure   TTxtImage.CMBidimodechanged(var   Message:   TMessage);   
  begin   
      inherited;   
      FImageLabel.BiDiMode:=BiDiMode;   
  end;   
    
  procedure   TTxtImage.CMEnabledchanged(var   Message:   TMessage);   
  begin   
      inherited;   
      FImageLabel.Enabled:=Enabled;   
  end;   
    
  procedure   TTxtImage.CMVisiblechanged(var   Message:   TMessage);   
  begin   
    inherited;   
    FImageLabel.Visible:=Visible;   
  end;   
    
  constructor   TTxtImage.Create(AOwner:   TComponent);   
  begin   
      inherited   Create(AOwner);//   首先调用父类的构造函数   
      FLabelPosition:=lpBelow;   
      FLabelSpacing:=3;   
      SetupInternalLabel;   
  end;   
    
  procedure   TTxtImage.Notification(AComponent:   TComponent;   
      Operation:   TOperation);   
  begin   
      inherited   Notification(AComponent,Operation);   
      if   (AComponent=FImageLabel)   and   (Operation=opRemove)   then   
          FImageLabel:=nil;   
  end;   
    
  procedure   TTxtImage.SetBounds(ALeft,   ATop,   AWidth,   AHeight:   Integer);   
  begin   
      inherited   SetBounds(ALeft,   ATop,   AWidth,   AHeight);   
      SetLabelPosition(FLabelPosition);   
  end;   
    
  procedure   TTxtImage.SetFLabelSpacing(const   Value:   Integer);   
  begin   
      FLabelSpacing:=Value;   
      SetLabelPosition(FLabelPosition);   
  end;   
    
  procedure   TTxtImage.SetupInternalLabel;   
  begin   
      if   Assigned(FImageLabel)   then   exit;   
      FImageLabel:=TBoundLabel.Create(Self);   
      FImageLabel.FreeNotification(Self);   
  //FImageLabel.FocusControl:=Self;   
  end;   
    
  procedure   TTxtImage.SetLabelPosition(const   Value:   TLabelPosition);   
  var   P:TPoint;   
  begin   
      if   FImageLabel=nil   then   exit;   
      FLabelPosition:=Value;   
      case   Value   of   
          lpAbove:   P:=Point(Left,Top-FImageLabel.Height-FLabelSpacing);   
          lpBelow:   P:=Point(Left,Top+Height+FLabelSpacing);   
          lpLeft:     P:=Point(Left-FImageLabel.Width-FLabelSpacing,   
                                      Top+((Height-FImageLabel.Height)   div   2));   
          lpRight:   P:=Point(Left+Width+FlabelSpacing,   
                                      Top+((Height-FImageLabel.Height)   div   2));   
      end;   
      FImageLabel.SetBounds(P.x,P.y,FImageLabel.Width,FImageLabel.Height);   
  end;   
    
  procedure   TTxtImage.SetName(const   Value:   TComponentName);   
  begin   
      if   (csDesigning   in   ComponentState)   and   (FImageLabel.GetTextLen=0)   or   
          (CompareText(FImageLabel.Caption,Name)=0)   then   
          FImageLabel.Caption:=Value;   
      inherited   SetName(Value);   
  end;   
    
  procedure   TTxtImage.SetParent(AParent:   TWinControl);   
  begin   
      inherited   SetParent(AParent);   
      if   FImageLabel=nil   then   exit;   
      FImageLabel.Parent:=AParent;   
      FImageLabel.Visible:=True;   
  end;   
    
  end.
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -