いつもお世話になります。
実行時に生成した5個のフォームをリストBOXで指定して、ランダムに最前面に表示したいのですが、
5個のフォームはNameをSfrm[0..4]、タイトルも同じくSfrm[0..4]としリストBOXで最前面に表示するフォームを指定。
FindWindow(lpclassName, lpWindowName: PChar)を使ってウィンドハンドルを取得してBringWindowtotop(Handle)で最前面に持ってこようとしたのですが、ウィンドーの指定が変数では受け付けません。FormStyleプロパティーでは、大変面倒になるかと?
何か良い方法をご教授下さい。よろしくお願いします。
フォームがすでに生成済みなら、Screen.Formsを検索して名前からフォームを探すことができます。
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i].Name = 探している名前 then
Screen.Forms[i].BringToFront;
名前ではなくてフォームへの参照を持っておいた方が話が簡単になると思いますけど。
Frm[0] := Form1;
Frm[1] := Form2;
...
Frm[ランダムな値].BringToFront;
FormArray: array [0..4] of TForm;
for i := 0 to 4 FormArray[i] := TSubForm.Create(Self);
こうしてフォームのインスタンス自体を配列に入れてしまって
BringWindowtotop(FormArray[ComboBox1.ItemIndex].Handle);
こうしてしまえば?
あ、かぶっちゃった。
そうか、フォームにはBringToFronってメソッドがあるんですね。
torさん早速に有り難うございます。
BringToFrontで一発解決です。なんと、これだけ!さんざん悩み検索しまくって時間を費やしたのです。
ちゃんとHELPファイルを読まないとダメですね。基本ですね。
Questさんも有り難うございました。
お世話になりました。無事解決です。
ツイート | ![]() |