TLABELのcaptionが'箱’のものを’個'に置換したい


ナツ  2010-04-08 02:18:24  No: 38218

以下のプログラムはTLABELをTransparent = Falseに置換するプログラムなのですが、これを利用してTLABELのcaptionが'箱’のものを’個'に一括置換するプログラムを作ってみたいのですが・・・

一部省略してあります。

Const
  co_Chk1 = 'TLabel';
  buffer1 = '    Transparent = False';
var
  Form_CVT_2: TForm_CVT_2;

implementation

{$R *.dfm}

//  置換処理 //

procedure TForm_CVT_2.Expermu(filename: string);
var
  List: TStringlist;
  i : Integer;
begin

  i := 0;

  //定義
  List := TStringList.Create;
  List.LoadFromFile(filename);

  //ファイルの読み込み
  try
    while True do
      begin
        //TLabel;文字列検索
        if pos(LowerCase(co_Chk1),LowerCase(List.Strings[i])) <> 0 then
          begin
            //ファイルに1行書く
            List.Insert(i+1,buffer1);
            i := i + 1;
          end;
        i := i + 1;
      end;
  except
    on E:EstringListError do
  end;
  List.SaveToFile(FileName);

end;

これ改造して
頑張ってみたものの、上手くできません。
できれば上記のを改造して作ってみたいのですが、
ヒントだけでも教えていただけませんか?


tor  2010-04-08 02:42:53  No: 38219

見たところ.dfmファイルの中身を書き換えるためのプログラムのようですが、それが本当にやりたいことなんですか?
- プログラムの実行時に動的に変更するのでは駄目なの?
(それでいいのだったら、Components[]を列挙してCaptionを変更してやればよい)
- 本当に.dfmを書き換えたいのなら、プログラムを作るよりエディタで開いて置換した方が早くない?

どうしてもプログラムで.dfmを書き換えたいのだとしたら
1. object xxxx: TLabel という行が出てきたら、そのことを覚えておく
2. その後で Caption = '箱' という行が出てきたら、StringReplaceで '個' に置き換える
というようにします。
CaptionがないLabelだとか、Labelの中に他のコンポーネントが入れ子になっているとかいったケースは考えなくていいと思うけれど
'StartLabel' みたいに一部にtlabelが入っている名前に騙されないよう気をつけないといけませんね。


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

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






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