フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: TEdit のプレースホルダ
Mr.XRAY
メンバー
投稿数: 192
TEdit のプレースホルダ
on: 2014/07/16 11:02 Wed

まず,プレースホルダとはどういうものかを,次のリンクで確認してください.
http://myakura.github.io/n/placeholder.html#intro

以下のコードは,フォームに配置した Edit1 にこのような機能を追加するものです.
これは,以下の記事のコードの一部分の再掲ですが,プレースホルダ(placeholder)という用語として,こちらに書いておきます.
動作確認環境は,Windows 7 U64(SP2) + Delphi XE(UP1) Pro です.

[Delphi2007 と TEdit (ついでに TComboBox)]
http://ht-deko.minim.ne.jp/tech022.html

implementation

uses CommCtrl;

{$R *.dfm}

//=============================================================================
// Edit1にプレースホルダを設定
// EM_SETCUEBANNERの使用には,usesにCommCtrlが必要
// SentTextMessageの第3引数を0にすると,TextHintプロパティと同じ動作となる
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.Text := '';
SendTextMessage(Edit1.Handle, EM_SETCUEBANNER, 1, '何か入力してね');

Edit2.Text := '';
Edit2.TextHint := 'お名前';
end;

//=============================================================================
// マウスダウンでプレースホルダが消えないようにする
// 完全にとはいかないようだ
//=============================================================================
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Trim(Edit1.Text) = '' then Edit1.Invalidate;
end;

//=============================================================================
// ついでにマウスアップも
// ちょっとチラつくようだ
//=============================================================================
procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Trim(Edit1.Text) = '' then Edit1.Invalidate;
end;

 
最初の図は,テストに使用したフォームの設計時の画像です.
その下が実行時の画面です.

何かを入力すると,プレースホルダの文字列が消えます.

次の,マイクロソフトの記事に
《You cannot set a cue banner on a multiline edit control or on a rich edit control. 》
とあるので,複数行のテキストコントロールやリッチエディットでは使用できませんね.

[EM_SETCUEBANNER message (Windows)]
http://msdn.microsoft.com/en-us/library/windows/desktop/bb761639%28v=vs.85%29.aspx

[Vcl.StdCtrls.TCustomEdit.TextHint - RAD Studio API Documentation]
http://docwiki.embarcadero.com/Libraries/XE5/ja/Vcl.StdCtrls.TCustomEdit.TextHint

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.025 sec.