以下のプログラムは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;
これ改造して
頑張ってみたものの、上手くできません。
できれば上記のを改造して作ってみたいのですが、
ヒントだけでも教えていただけませんか?
見たところ.dfmファイルの中身を書き換えるためのプログラムのようですが、それが本当にやりたいことなんですか?
- プログラムの実行時に動的に変更するのでは駄目なの?
(それでいいのだったら、Components[]を列挙してCaptionを変更してやればよい)
- 本当に.dfmを書き換えたいのなら、プログラムを作るよりエディタで開いて置換した方が早くない?
どうしてもプログラムで.dfmを書き換えたいのだとしたら
1. object xxxx: TLabel という行が出てきたら、そのことを覚えておく
2. その後で Caption = '箱' という行が出てきたら、StringReplaceで '個' に置き換える
というようにします。
CaptionがないLabelだとか、Labelの中に他のコンポーネントが入れ子になっているとかいったケースは考えなくていいと思うけれど
'StartLabel' みたいに一部にtlabelが入っている名前に騙されないよう気をつけないといけませんね。
ツイート | ![]() |