with文で異なるオブジェクトを実行する


みすず  2010-03-09 19:39:49  No: 37941

with文で

with hogeA do
begin

end;

hogeBもまったく同じ処理やりたいのですが、

with hogeA,hogeB do
だとヘルプを見ると2回HogeAのあとHogeBをじっこうしてくれるわけではなく
HogeBを優先的にやってしまうようです。

今言ったみたいに、HogeA実行、HogeB実行としたいのですが、
with hogeA do
begin

end;
with hogeB do
begin

end;

とせずになにかありますか?


TS  2010-03-09 20:26:33  No: 37942

こうゆう事でしょうか。

procedure 小さなお仕事(hoge:Thoge);
begin
  with hoge do
    begin     

    end;
end;

procedure 色々な仕事;
begin
  小さなお仕事(hogeA);
  小さなお仕事(hogeB);
end;


みすず  2010-03-09 20:42:43  No: 37943

hogeA、hogeBともにThogeであれば、Tsさんの処理で大丈夫ですね。

説明不足でしたが、hogeA,hogeBは違うクラスです。
ただ、処理は同じで問題ないです。


Fusa  2010-03-09 21:59:42  No: 37944

少し裏技のような感じになりますが
Includeを使うといいのではないでしょうか。

Includeの便利な使い方
http://delfusa.main.jp/delfusafloor2/technic/technic/054_UsefulInclude.html

ここに書いております。


tor  2010-03-10 02:13:21  No: 37945

> 説明不足でしたが、hogeA,hogeBは違うクラスです。
> ただ、処理は同じで問題ないです。

違うクラスといっても、同じ処理をさせたいということは共通の要素があるわけですよね。
例えば、hogeAがTLabel、hogeBがTButtonだとしたら、TControlが共通の親クラスですから
TControlを受け取るprocedureを定義すればいいことになります。
(操作したいプロパティやメソッドをTControlが公開していなかったら一工夫必要になりますが)

そういう共通の親はいないんでしょうか?
あるいは、両方とも自作のクラスだとしたら、共通の親から派生するようにできませんか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加