質問なんですが、Form1のImage1.OnMouseDownで
btnDraw(Sender);//独自関数
delay(200); //下記
Form2.Visible := not Form2.Visible;
delay(200);
btnDraw(Sender);
とすると、Visible:=Trueとなる場合に(Trueを代入する場合)
一度Form2のオブジェクトにフォーカスが当たるのですが、
その後またフォーカスがForm1に戻ってしまいます。
delay関数でインターバルを設定しているのが
悪いのかどうかは判断できませんでした。

procedure delay(T: Longint);
var
finish: longint;
begin
finish := LongInt(GetTickCount) + T;
repeat
Application.ProcessMessages
until LongInt(GetTickCount) > Finish;
end;