• Delphi7如何实现让Tedit显示文字垂直居中(上下居中)


    通过下面的组件,可以在输入文字的时候自动垂直居中 
    直接把下面代码保存到Unit1.pas即可
    ------------------------------------------

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TEdit = class(StdCtrls.TEdit)
      protected
        procedure CreateParams(var Params: TCreateParams); override;
        procedure KeyPress(var Key: Char); override;
        procedure WMSize(var msg: TWMSize);message WM_SIZE;
        procedure SetParent(AParent: TWinControl);override;
        procedure SetCenter;
      end;
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
         Edt: TEdit;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    { TEdit }
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edt := TEdit.Create(self);
      Edt.Parent := self;
      Edt.AutoSize := False;
      Edt.Height := 50;
    end;
    
    procedure TEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style := Params.Style or ES_MULTILINE;
    end;
    
    procedure TEdit.KeyPress(var Key: Char);
    begin
      inherited;
      if Key = #13 then
        key := #0;
    end;
    
    procedure TEdit.WMSize(var msg: TWMSize);
    begin
      inherited;
      SetCenter;
    end;
    
    procedure TEdit.SetParent(AParent: TWinControl);
    begin
      inherited;
      if Parent <> nil then
      begin
        SetCenter;
      end;
    end;
    
    procedure TEdit.SetCenter;
    var
    DC: HDC;
    SaveFont: HFont;
    Sin: Integer;
    SysMetrics, Metrics: TTextMetric;
    Rct: TRect;
    begin
    DC := GetDC(0);
    GetTextMetrics(DC, SysMetrics);
    SaveFont := SelectObject(DC, Font.Handle);
    GetTextMetrics(DC, Metrics);
    SelectObject(DC, SaveFont);
    ReleaseDC(0, DC);
    if Ctl3D then Sin := 8 else Sin := 6;
    Rct := ClientRect;
    Sin := Height - Metrics.tmHeight - Sin;
    Rct.Top := Sin div 2;
    SendMessage(Handle, EM_SETRECT, 0, Integer(@Rct));
    end;
    
    
    
    
    end.

    当这个保存成unit1.pas 后,然后通过delphi组件安装功能来安装组件,具体安装方法可以到网上查方法

  • 相关阅读:
    js 去除金额的千位分隔符
    vue中的iviewUI导出1W条列表数据每次只导出2000条的逻辑
    js取整数、取余数的方法
    http协议
    vue 项目安装sass的依赖包
    浅析vue的双向数据绑定
    闭包
    Top 20 NuGet packages for captcha
    IIS URL Rewrite Module的防盗链规则设置
    IIS URL Rewrite – Installation and Use
  • 原文地址:https://www.cnblogs.com/jijm123/p/7856548.html
Copyright © 2020-2023  润新知