[delphi-users:2412] TEditで上下方向の真ん中表示する方法知りませんか

1,739 views
Skip to first unread message

snail3

unread,
Jan 31, 2012, 8:01:26 PM1/31/12
to delphi...@freeml.com
すみませんが又教えて下さい。

前から気になっていたんですが、TEDITって枠を広げると上付になって
みっともないんですが、中央に表示する方法ってないでしょうか

よろしくお願いいたします。

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hPMfd
------------------------------------------------------[freeml byGMO]--

Mr.XRAY

unread,
Feb 10, 2012, 2:39:24 PM2/10/12
to delphi...@freeml.com
[delphi-users:2412] TEditで上下方向の真ん中表示する方法知りません
か へのレスです.

こんにちは,Mr.XRAYです.
本人ではなく,僭越ですが,
この発言に関連して,当方の掲示板に書き込みがありました.
経過は以下のスレッドになっていますので,報告致しておきます.

http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s5730


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
毎日豪華プレゼントキャンペーン開催中!くまポン
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSqiD
------------------------------------------------------[freeml byGMO]--

高木太郎

unread,
Feb 10, 2012, 10:23:20 PM2/10/12
to delphi...@freeml.com
 こんにちは、イマジオムの高木です。

takashi さん、Mr.XRAY さん:
>> 前から気になっていたんですが、TEDITって枠を広げると上付になって
>> みっともないんですが、中央に表示する方法ってないでしょうか


>
> この発言に関連して,当方の掲示板に書き込みがありました.
> 経過は以下のスレッドになっていますので,報告致しておきます.
>
> http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s5730

 すみません、お返事しようかどうか迷っているうちに、何日も過ぎて
しまいました。

 どんなことをなさりたいのかによって、回答がかなり変わると思います。
たとえば2行分の高さがある TEdit(みたいなコントロール)を考えると
します。 選択範囲やカーソルも含めて、上下いっぱいに広げたいという
ことだとちょっと面倒だと思いますが、選択(フォーカスされていない
時に)上下中央に文字が配置されているように見せるだけでしたら、
3D枠のついた背の高い TEdit の手前に、3D枠のない通常の TEdit を
配置するとかして、比較的簡単に実現できると思います。

 いずれにしても、ご希望の動作をもう少し詳しくお知らせくだされば、
もう少し具体的なことが言えると思います。
――――――――――――――――――――――――――――――――――――
株式会社イマジオム 代表取締役 高木太郎
〒316-0024 茨城県 日立市 水木町 1-11-10
電話:0294-28-0147
ファクシミリ:0294-28-0148
携帯電話:090-8177-5709
電子メール:tarou_...@imageom.co.jp
ホームページ:http://www.imageom.co.jp/


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSt63
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 11, 2012, 8:55:47 PM2/11/12
to delphi...@freeml.com
>  いずれにしても、ご希望の動作をもう少し詳しくお知らせくだされば、
> もう少し具体的なことが言えると思います。

ありがとうございます。

Mr.XRAY さんにフォローして頂いた通り、別の掲示板でも質問して、
私が実際に何がしたいのか、まだ回答できていないという恥ずかし状態になって
います。進展がありましたら改めて報告させていただきます。


--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メンバーで使える掲示板を活用しよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hS43r
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 12, 2012, 8:02:46 PM2/12/12
to delphi...@freeml.com
こんにちは

自分なりにまとめてみました。↓にイメージが貼ってあります。

http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s5759#5759

要約すると、フォームの見栄えを良くするために TLabel で色を付けたが、
色を付けると TLabel と TEdit を並べた時に文字の位置が気に掛かる。
文字の位置を合わせると、枠の位置が気に掛かる。
ということです。

TEdit の文字位置を変更する方法以外にも、フォームというかアプリケーション
の外見を見栄え良くするための方法、例えば色の使い方や TLabel 以外との組み
合わせなど、結果として見栄え良くなる方法のアドバイスもお持ちしています。

よろしくお願いいたします。

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
毎日豪華プレゼントキャンペーン開催中!くまポン
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSGxu
------------------------------------------------------[freeml byGMO]--

じゃぺ

unread,
Feb 12, 2012, 8:40:41 PM2/12/12
to delphi...@freeml.com
川上です

イメージを見るかぎり、「文字位置を揃えて」から
TShapeを使って足りない枠を補うというのは
いかがでしょうか。
ラベルの位置、表示、色等は結構面倒なので、
Tlabelはラベルを表示するだけ、と割りきって、それ
以外はTShape、TPanel、TBevelなどを駆使して
レイアウトしています。

いつでも希望通りにレイアウトを作成することは
難しいです。
私もクライアント向けのvclアプリケーションを作成
していますが、開発スピードを優先して(多少)不揃い
でもよしとするか、時間(=お金)をかけてもできるだけ
見栄えをよくしたいかは、よくお客さんと相談して
決めています。
(ウチの会社のスタンスは「開発者はあまり気にする
べきではない」という感じです。本質的なところではない
ので。よって顧客とよく相談してから決めます。)

参考になれば幸いです。

川上


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSGUk
------------------------------------------------------[freeml byGMO]--

tmatu

unread,
Feb 12, 2012, 8:52:08 PM2/12/12
to delphi...@freeml.com
> こんにちは
>
> 自分なりにまとめてみました。↓にイメージが貼ってあります。
>
> http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s5759#5759
>
> 要約すると、フォームの見栄えを良くするために TLabel で色を付けたが、
> 色を付けると TLabel と TEdit を並べた時に文字の位置が気に掛かる。
> 文字の位置を合わせると、枠の位置が気に掛かる。
> ということです。
>
> TEdit の文字位置を変更する方法以外にも、フォームというかアプリケーション
> の外見を見栄え良くするための方法、例えば色の使い方や TLabel 以外との組み
> 合わせなど、結果として見栄え良くなる方法のアドバイスもお持ちしています。
>
> よろしくお願いいたします。
>
> --
> takashi <taka...@csjpn.com>

はじめまして、あまり商売の押し売りをしたくなかったので、静観しておりました。
もしや、こちら
http://conferences.embarcadero.com/article/images/39709/a4.pdf
なんかは今回の内容にマッチしておりませんでしょうか。
TEditのBorderStyleをbsNoneにしAutoSizeをFalseにすることで、文字列の高さにフィットしたEditを作り出すことができます。そのEditをTPanel上に配置し、EditのTopを調整し、文字がセンターに来るように配置すれば一応ご希望のような外観になると思いますがいかがでしょうか。

MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メンバーで使える掲示板を活用しよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSHdy
------------------------------------------------------[freeml byGMO]--

Quest

unread,
Feb 12, 2012, 9:27:28 PM2/12/12
to delphi...@freeml.com
Questです。

多少、見た目が変わるかもしれませんが、TLabelの替わりにTStaticTextを使うのはどうでしょう。
TStaticTextのBorderStyleをsbsSunken、BevelKindをbkFlat、
BevelInnerとBevelOuterをbvSpaceにすると
枠が付きますが、コンポのサイズを合わせながら文字の垂直位置も合わせられます。
Delphi2007で試しましたが、DelphiXE2(?)でも同じかな?

MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSH6Z
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 12, 2012, 10:01:47 PM2/12/12
to delphi...@freeml.com
お返事ありがとうございます。

> TShapeを使って足りない枠を補うというのは
> いかがでしょうか。

TShapeをの上に TLabel を置けば枠の大きさ、文字の位置を自由に
レイアウトできてよさそうです。

今までは効率第1で画面に色を付けることは、ほとんど無かったのですが
今回はVBのリプレースで色を付けたら、気になってしまっていました。

> (ウチの会社のスタンスは「開発者はあまり気にする
> べきではない」という感じです。本質的なところではない
> ので。よって顧客とよく相談してから決めます。)

かなり無理して受注したので相談できないんです。(>_<)

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
毎日豪華プレゼントキャンペーン開催中!くまポン
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSIaK
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 12, 2012, 10:04:24 PM2/12/12
to delphi...@freeml.com
お返事ありがとうございます。

> もしや、こちら
> http://conferences.embarcadero.com/article/images/39709/a4.pdf
> なんかは今回の内容にマッチしておりませんでしょうか。
> TEditのBorderStyleをbsNoneにしAutoSizeをFalseにすることで、文字列の高さにフィットしたEditを作り出すことができます。そのEditをTPanel上に配置し、EditのTopを調整し、文字がセンターに来るように配置すれば一応ご希望のような外観になると思いますがいかがでしょうか。

とりあえず PDF を印字してみました。後でゆっくり見てみます。

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSIdn
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 13, 2012, 6:40:28 AM2/13/12
to delphi...@freeml.com
教えていただいてありがとうございます。

> 多少、見た目が変わるかもしれませんが、TLabelの替わりにTStaticTextを使うのはどうでしょう。
> TStaticTextのBorderStyleをsbsSunken、BevelKindをbkFlat、
> BevelInnerとBevelOuterをbvSpaceにすると

なかなかいい感じです。


--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メンバーで使える掲示板を活用しよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSQKT
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 13, 2012, 6:47:28 AM2/13/12
to delphi...@freeml.com
皆さんありがとうございました

結局騒いだ割にしょぼい結論に達しました。
 ↓
☆TLabel TEdit 並べた時に文字位置の違いを気にならないようにするポイント☆
1.Autosize プロパティは False
2.TLabel TEdit のFont プロパティは同じにする。
3.Height は TEdit に合わせる
4.TLabel Layout は tlCenter にする。

標準の TLabel TEdit の組み合わせでなっとくしました。

お騒がせしました。
--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSQSt
------------------------------------------------------[freeml byGMO]--

KHE00221

unread,
Feb 13, 2012, 7:20:17 PM2/13/12
to delphi...@freeml.com
VBだけど
http://hanatyan.sakura.ne.jp/vbhlp/textali.htm
これだろ?

皆さんありがとうございました

標準の TLabel TEdit の組み合わせでなっとくしました。

お騒がせしました。
--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
毎日豪華プレゼントキャンペーン開催中!くまポン
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSWAV
------------------------------------------------------[freeml byGMO]--

Fukushi

unread,
Feb 13, 2012, 7:44:27 PM2/13/12
to delphi...@freeml.com
takashiさん、KHE00221さん、こんにちは。福士です。

> VBだけど
> http://hanatyan.sakura.ne.jp/vbhlp/textali.htm
> これだろ?

私もそう思ったのですが、

EM_SETRECT message
http://msdn.microsoft.com/en-us/library/windows/desktop/bb761657.aspx

> Sets the formatting rectangle of a multiline edit control.

となっており、実際TEditでは正常に動作しません。

# TMemoで1行になるように制御するとか、TEditでCreateParamsの
# Params.StyleにES_MULTILINEを追加する(これも1行になるように
# 制御する必要があるので同じ)ことで解決可能ですけどね…。

---
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSWVc
------------------------------------------------------[freeml byGMO]--

KHE00221

unread,
Feb 13, 2012, 7:45:58 PM2/13/12
to delphi...@freeml.com
Edit じゃ無理みたいなので

procedure TForm3.Button1Click(Sender: TObject);
var
ARect: PRect;
begin
Memo2.WordWrap := False;
SendMessage (Memo2.Handle,EM_GETRECT,0,Integer(ARect));
ARect.Top := 20; //例 中央に表示したければ計算しないとだめ
SendMessage (Memo2.Handle,EM_SETRECT,0,Integer(ARect));
end;

procedure TForm3.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = Char(VK_RETURN) then Key := Char(0);
end;

VBだけど
http://hanatyan.sakura.ne.jp/vbhlp/textali.htm
これだろ?

皆さんありがとうございました

標準の TLabel TEdit の組み合わせでなっとくしました。

お騒がせしました。
--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

MLホームページ: http://www.freeml.com/delphi-users

MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メンバーで使える掲示板を活用しよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hSWWi
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Feb 14, 2012, 12:50:57 PM2/14/12
to delphi...@freeml.com
お返事ありがとうございます。

今日はできそうもありませんが、後で試してみます。
結果は改めて、ここで報告します

> __________ ESET NOD32 Antivirus からの情報, ウイルス定義データベースのバージョン 6881 (20120213) __________
>
> このメッセージは ESET NOD32 Antivirus によって検査済みです。
>
> http://canon-its.jp
>
>

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=hTkv8
------------------------------------------------------[freeml byGMO]--

Mr.XRAY

unread,
Dec 14, 2014, 6:54:55 PM12/14/14
to delphi...@freeml.com
【[delphi-users:2447] Re: TEdit上下方向の真ん中表示する方法知りませんか
】 へのレスです.

こんにちは.Mr.XRAYです.
非常に恐ろしい程の亀レスですが ...

># TMemoで1行になるように制御するとか、TEditでCreateParamsの
># Params.StyleにES_MULTILINEを追加する(これも1行になるように
># 制御する必要があるので同じ)ことで解決可能ですけどね…。

この文章を元にして,上下方向(縦方向,あるいは,垂直方向) の
表示位置の設定が可能な TEdit を作成してみました.
今更という感は否めませんが,参考になれば.

[168_上下方向のアライメント機能付きの TEdit]
http://mrxray.on.coocan.jp/Delphi/plSamples/168_TEdit_VerticalAligment.htm


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
英語ペラペラになるだけなら、聞き流す教材を使う必要も、
高い英会話スクールに通う必要もありません。
「たった一つの事」を覚えるだけで、英語はペラペラになれるんです。
http://ad.freeml.com/cgi-bin/sa.cgi?id=mlEz2
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages