zoukankan      html  css  js  c++  java
  • 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组件安装功能来安装组件,具体安装方法可以到网上查方法

  • 相关阅读:
    Java 中Timer和TimerTask 定时器和定时任务使用的例子详解
    CentOS7下安装Scrapy步骤详解
    使用C++实现求最大公约数和最小公倍数算法详解
    windows ruby on rails搭建搭建
    php爬虫选择器-来自phpspider
    markdown增强显示插件
    PHP7以上的异常处理变化
    open-php开源项目:php-code-generator PHP流行框架的curd的代码生成器
    laravel withoutOverlapping导致执行脚本延迟或者失效问题
    vcpkg国内镜像设置
  • 原文地址:https://www.cnblogs.com/jijm123/p/7856548.html
Copyright © 2011-2022 走看看