[delphi-users:3733] グループ(GropBox等)下の全てのTEdit.Textのクリア

234 views
Skip to first unread message

OE

unread,
Mar 20, 2014, 4:44:17 AM3/20/14
to delphi...@freeml.com
[開発環境 Delpho2010 Windows7(64)]

こんにちは、OEです。
よろしくお願いいたします。

あるGroupBox下にあるTEditのTextを全てクリアしたいのですが、
どういう方法がありますでしょうか。


例えば、
for i:=1 to Form1.ComponentCount-1 do
if Form1.Components[i] is TEdit then
TEdit(Form1.Components[i]).Text :='';
とすると、(もちろん)全てのTEditのTextが''に書き換えられます。

しかし、
for i:=1 to GroupBox1.ComponentCount-1 do
if GroupBox1.Components[i] is TEdit then
TEdit(GroupBox1.Components[i]).Text :='';
としても何もおきてくれません。

そもそも、
ShowMessage(IntToStr(GroupBox1.ComponentCount));
とすると返ってくるのは 0 です(..;)""""> ポリポリ


コンポーネントをグループ化して一気に操作できると
とても便利なので、何か方法があれば知りたいです。


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






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

----------------------------------------------------------------------
【注目資格 理学療法士】保険医療学部のある大学10選
理学療法士の大学&専門学校 ランキングシェア byGMO
http://ad.freeml.com/cgi-bin/sa.cgi?id=kZFFs
------------------------------------------------------[freeml byGMO]--

Quest

unread,
Mar 20, 2014, 5:38:42 AM3/20/14
to delphi...@freeml.com
こんにちは、Questです。

for i:=1 to Form1.ComponentCount-1 do
if (Form1.Components[i] is TEdit)
and (TEdit(Form1.Components[i]).Parent = GroupBox1) then
TEdit(Form1.Components[i]).Text :='';

ってのはどうでしょう?
Delphi2007ではOKでした。


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

----------------------------------------------------------------------
【注目資格 理学療法士】保険医療学部のある大学10選
理学療法士の大学&専門学校 ランキングシェア byGMO
http://ad.freeml.com/cgi-bin/sa.cgi?id=kZG6e
------------------------------------------------------[freeml byGMO]--

OE

unread,
Mar 20, 2014, 5:56:32 AM3/20/14
to delphi...@freeml.com
Questさん

.Parent で判断できるんですね。
OKでした。

ありがとうございました。


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

----------------------------------------------------------------------
【注目資格 理学療法士】保険医療学部のある大学10選
理学療法士の大学&専門学校 ランキングシェア byGMO
http://ad.freeml.com/cgi-bin/sa.cgi?id=kZGMU
------------------------------------------------------[freeml byGMO]--

windy

unread,
Mar 20, 2014, 6:03:22 AM3/20/14
to delphi...@freeml.com
windyです。

GroupBoxの子コントロールを操作するときはComponents,
ComponentCountではなくControls,ControlCountプロパティを使用
します。

どこかに良い資料があるかどうかは分かりませんが、コンポーネン
トの所有関係とコントロールの親子関係の区別について良く理解し
た方が良いと思います。

Components,ComponentCountプロパティは自身が「所有する」コンポ
ーネントが格納されています。
オブジェクトのインスタンス化時にコンストラクタにOwnerを指定
した場合、新たに作成されたオブジェクトはOwnerに「所有」され
ます。
IDEのデザイナで作成した場合、全てのコンポーネントは配置した
Formに所有されます。

一方、ウインドウの親子関係は親コントロールのControls,
ControlCountプロパティに直接の子コントロールが格納されます。
Panel・GroupBoxなどのコンテナになるコントロールが親コントロー
ルになります。

以上です。


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

----------------------------------------------------------------------
【注目資格 理学療法士】保険医療学部のある大学10選
理学療法士の大学&専門学校 ランキングシェア byGMO
http://ad.freeml.com/cgi-bin/sa.cgi?id=kZGTq
------------------------------------------------------[freeml byGMO]--

OE

unread,
Mar 21, 2014, 9:22:47 PM3/21/14
to delphi...@freeml.com
OEです、皆さまこんにちは。

windyさん

ComponentsとControlsがあると知ることができ、
その違いも理解できて、とてもスッキリしました。
ありがとうございました。

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for I := GroupBox1.ControlCount-1 downto 0 do
if GroupBox1.Controls[i] is TEdit then
TEdit(GroupBox1.Controls[i]).Text :=''
end;
{ 動的生成時の解放も考慮しdowntoにしています }


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

----------------------------------------------------------------------
【注目資格 理学療法士】保険医療学部のある大学10選
理学療法士の大学&専門学校 ランキングシェア byGMO
http://ad.freeml.com/cgi-bin/sa.cgi?id=kZZ7z
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages