VBから移行した者です。
すべてのeditコンポーネントをリセットするプログラムを書きたいのですが、VBであるFor each文と同じものがあるらしいのですが、どのように書いたらいいのでしょうか?
一通りログも見ましたがないようなので質問させていただきました。
よろしくお願いします。
一通り見ていれば、絶対にあると思いますよ。いくつも見つかります。
ComponentCountプロパティが、そのコンポーネントに張り付いているコンポーネントの数で、Componentsプロパティが、張り付いているコンポーネント配列です。
確かに(汗
Componentで検索したらいろいろ見つかりました。
FindComponentを使用することにしました。
どうも、ありがとうございました。
解決押した後ですが、すみません。
それで、ログを参考にワイルドカードを用いて、以下のように書いたのですが、リセットされません。
何故なのでしょうか?
procedure TForm1.risetto_buttonClick(Sender: TObject);
var
a : Integer;
begin
for Cnt := 0 to 100 do
begin
//VBの癖で最後に_editや_labelなどと名前をつけています。
(FindComponent('*_edit') As TEdit).Text := '';
end;
end;
end.
>(FindComponent('*_edit') As TEdit).Text := '';
もしかして、ワイルドカードのつもり?そんなもの使えません。
ワイルドカードは使用できません
TagとかNameで工夫したほうが良いでしょう
procedure TForm1.Button1Click(Sender: TObject);
var
i :Integer;
begin
for i := 0 to ControlCount -1 do
begin
if Components[i] is TEdit then//該当コンポーネントがTEditか判断
begin
//条件に合ったコンポーネントを初期化(全てだったらいらないけど)
//例えば
//if (Components[i] as TEdit).Tag = 1 then
//(一括で初期化したいEditのTagを1にしておく)
//Nameで判断(Name付けに特定のルールを・・・)
if (Components[i] as TEdit).Name = 'Edit' + IntToStr(i +1) then
begin
(Components[i] as TEdit).Text := '';
end;
end;
end;
end;
かな
あっ!間違えた。
ほにゃらら.ControlCount で
Controls[i] is ・・・Controls[i] as ・・・
ComponentCount が
Components[i] is ・・・Components[i] as ・・・
でした。
違いはHelpをm(__)m
そうですね、Tagという手もありました。
ありがとうございました。
ツイート | ![]() |