2012-03-09 10 views
1

私はデルファイでいくつかのダイアログウィンドウを呼び出しました。私はそれに言い訳を得ることを試みている、buは問題に遭遇する。これらのコントロールはVCLではないので、FindWindow(ハンドル)は使用できません:TWinControlハンドルでWindowsコントロール(ダイアログウィンドウ)のインスタンスを取得

適切なウィンドウコントロールを返すメソッドはありますか?

私のようなダイアログウィンドウの情報から収集することができます任意のチェイスあります:そこにいる場合

は*ダイアログウィンドウ上のコントロールの数 *名称、テキスト、コントロールのクラス名、ダイアログウィンドウ上

+1

このウィンドウハンドルからは、TWinControlまたは実際にはどのVCLインスタンスも取得できません。 'EnumChildWindows'を呼び出すと、トップレベルダイアログウィンドウの子を列挙できます。そしてクラス名などを問い合わせることができます。必要な主なWin32 APIは 'GetClassName'と' GetWindowText'です。 –

+0

Windows.pasは型なしの 'Pointer'としてenum procを定義するので、' @ EnumChildProc'を書く必要があります!私は個人的に私が正しいことを確かめるために型付きコールバックプロシージャを持った自分の 'import'を定義します。 –

+0

あなたはそれを私の原因で行う回答メイトとして投稿するべきです。もう一度ありがとう –

答えて

2

実際にはダイアログボックスを表すVCLコントロールではないので、何も作成しないでください。 VCLコントロールは対応するWindowsコントロールを作成し責任を負いますが、Windowsコントロールがすでに存在する場合は、それらを新しいVCLオブジェクトに「ラップ」する方法はありません。

代わりにウィンドウハンドルを直接操作するだけで済みます。必要な情報を収集するために使用することができます。

関連する問題