• 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组件安装功能来安装组件,具体安装方法可以到网上查方法

  • 相关阅读:
    学了这些,你就算入门DIV+CSS了(转)
    【转】Web service是什么?
    [转]MongoDB插入和查询操作
    【转】安装m2e最佳方案
    XDS框架基本事务及其Soap消息实例
    数据表改变之后数据的迁移
    HL7 PID (Patient Identification) Segment(HL7规定的PID字段)
    海量数据库的设计
    【转】基于Axis2开发WebService
    【转】JAVA 调用Web Service的方法
  • 原文地址:https://www.cnblogs.com/jijm123/p/7856548.html
Copyright © 2020-2023  润新知