zoukankan      html  css  js  c++  java
  • 如何在TEdit中画TComboBox上右边的那个下拉小按钮

    回复于: 2004-07-22 21:50:55
    给你专门写了个,怎么样?
    unit myedit;
     
    interface
     
    uses
      Windows, SysUtils, Classes, ComCtrls,forms,Controls, ExtCtrls,StdCtrls,Buttons,Graphics;
     
    type
     TMyButton = class(TSpeedbutton)
     private
     protected
      procedure Paint; override;
     public
     end;
     
      TMyEdit = class(TCustomEdit)
      private
     
      protected
      published
        property Anchors;
        property AutoSelect;
        property AutoSize;
        property BevelEdges;
        property BevelInner;
        property BevelKind default bkNone;
        property BevelOuter;
        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;
     
     
     
    type
      TNewPanel = class(TCustomPanel)
      private
        FEdit: TMyEdit;
        FButton: TMyButton;
      protected
        procedure Resize; override;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      published
        property Edit: TMyEdit read FEdit;
        property UpDown: TMyButton read FButton;
        property BevelOuter default bvNone;
        property BorderStyle default bsSingle;
        property Width default 80;
        property Height default 20;
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('Mycomponent', [TNewPanel]);
    end;
     
    { TMyPanel }
     
    constructor TNewPanel.Create(AOwner: TComponent);
    begin
      inherited;
      Caption := '';
      BevelOuter := bvNone;
      BorderStyle := bsSingle;
     
      FEdit := TMyEdit.Create(Self);
      FEdit.SetSubComponent(True);
      FEdit.BorderStyle := bsNone;
      FEdit.Height := 16;
      FEdit.Parent := Self;
     
     
      Fbutton := TMyButton.Create(Self);
      FButton.Name:='button';
      Fbutton.SetSubComponent(True);
      FButton.Parent := Self;
      Fbutton.Height:=16;
      Fbutton.Width:=16;
      Width := 80;
      Height := 20;
    end;
     
    destructor TNewPanel.Destroy;
    begin
      FEdit.Free;
      FButton.Free;
      inherited;
    end;
     
    procedure TNewPanel.Resize;
    begin
      inherited;
      FEdit.Width :=self.Width-20;
      FButton.Left:=FEdit.Left+Fedit.Width;
     
      Fedit.Height:=self.Height-4;
      fButton.Height:=Fedit.Height;
    end;
     
     
     
     
    { TMyButton }
     
    procedure TMyButton.Paint;
    var
    x,y:integer;
    begin
      inherited;
      x:=5;
      y:=(self.Height-3) div 2;
      canvas.Pen.Color:=Clblack;
      Canvas.MoveTo(X, Y);
      canvas.lineTo(X+7,y);
     
      Canvas.MoveTo(X+1,y+1);
      Canvas.LineTo(X + 6, Y+1);
     
      Canvas.MoveTo(X + 2, Y + 2);
      Canvas.LineTo(X + 5, Y+2);
     
      Canvas.MoveTo(X + 3, Y + 3);
      Canvas.LineTo(X + 4, Y+3);
    end;
     
    end.
     
    ======================
    回复于: 2004-07-23 09:29:27
    procedure TForm1.Button1Click(Sender: TObject);
    var
      H: THandle;
      R: TRect;
    begin
      H := GetDC(Edit1.Handle);
      R := Edit1.ClientRect;
      R.Left := R.Right - 20;
      DrawFrameControl(H, R, DFC_SCROLL,
                       DFCS_SCROLLCOMBOBOX);
      ReleaseDC(Edit1.Handle, H);
    end;
  • 相关阅读:
    mycat 查询sql 报错
    mysql 主从 binlog
    数据库分库分表思路
    JavaScript数组知识
    JS判断当前页面是在 QQ客户端/微信客户端/iOS浏览器/Android浏览器/PC客户端
    js汉字转换为拼音
    工作中常用到的JS验证
    自动部署服务器代码
    php Excel 导入
    PHP 模拟http 请求
  • 原文地址:https://www.cnblogs.com/huapox/p/3299841.html
Copyright © 2011-2022 走看看