delphi Memo加个PromptText  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi Memo加个PromptText


TEdit有PromptText属性,用来显示一个提示,又不影响输入。TMemo没有,在官方提了需求也没响应。实在没办法,自己加个。话不多说,上代码:

type
  TForm6 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Memo1ApplyStyleLookup(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FPrompt:TText;//用他来显示PromptText文字
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.fmx}

procedure TForm6.Button1Click(Sender: TObject);
begin
   FPrompt.Text:='输入内容....';//显示提示文字
end;

procedure TForm6.Button2Click(Sender: TObject);
begin
 FPrompt.Text:='';//隐藏提示文字
end;

//处理TMemo.ApplyStyleLookup事件,在背景上写文字对象
procedure TForm6.Memo1ApplyStyleLookup(Sender: TObject);
var
  o:TLayout;
begin
    //建产文字对象,风格你自己定.
    if not Assigned(FPrompt) then
    begin
      FPrompt:=TText.Create(Self);
      FPrompt.Align:=TAlignLayout.Left;
      FPrompt.Width:=TMemo(Sender).Width;
      FPrompt.TextSettings.HorzAlign:=TTextAlign.Leading;
      FPrompt.TextSettings.FontColor:=TAlphaColorRec.Red;
      FPrompt.Margins.Left:=2;
      FPrompt.HitTest:=False;
    end;
    o := (Sender as TMemo).FindStyleResource('content') as TLayout ;
    FPrompt.Parent:=o;//将FPrompt显示到Memo的背景上
end;

end.

感谢清幽傲竹,告诉我用ApplyStyleLookup事件来取到背景对象!

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.042438983917236 seconds