掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
EnumChildWindowsでTLabelを取得するには? (ID:45397)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>ただ、EXEが300個以上あり、担当者も複数に渡ります。 >ですので、TStaticTextへの変更や、マニュアルモードの仕込みは >結構難しいです。 >ちょっと、ツール化は難しいそうなので、コピペで泥臭くがんばろうかなと今は思っています。 目的のEXEのソースコードにフクロウさんがアクセスできるのならばツール化は可能と思います。 (書き込みできなくても読み込みのみできればOK) ・まずアプリ中のフォームのLabelを列挙するツールを作ります。 ・そのツールのプロジェクトに目的のEXEのフォームを追加します。 ・「プロジェクト」の「オプション」で追加したフォームを「自動作成の対象」にします。 ・ツールを実行。 場合によっては必要なdcuがないと怒られることもあるのでその場合はそのdcuの元になっているソースコードをプロジェクトに追加します。 ↓こんな感じかなと。 procedure TForm1.Button1Click(Sender: TObject); procedure LabelGet(AForm: TForm); var i : Integer; l_Label : TLabel; begin for i := 0 to AForm.ComponentCount -1 do begin if (AForm.Components[i] is TLabel) then begin l_Label := TLabel(AForm.Components[i]); //Top,Leftの順に並べ替えるため4桁の幅の数値にしてしまう ListBox1.Items.Add(Format('%s %.4d %.4d %s "%s"/%s', [AForm.Name, l_Label.Top, l_Label.Left, l_Label.Name, l_Label.Caption, l_Label.Hint])); end; end; end; var i : Integer; l_Form : TForm; begin ListBox1.Sorted := True; ListBox1.Items.Clear; for i := 0 to Screen.FormCount -1 do begin l_Form := Screen.Forms[i]; if (l_Form <> Self) then begin LabelGet(l_Form); end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.