Dann ist es ja auch kein Wunder, denn während du die F7 Taste noch gedrückt hältst, betrittst dein Programm die ShowModal-MessageLoop. Wenn du nun die F7 Taste loslässt, wird ein OnKeyUp Ereignis ausgesandt, dass dann eben nicht von Form2 sondern von der ShowModal-MessageLoop an Form3 geleitet wird.
Code:
Form2.OnKeyDown([F7]) {
Form3.ShowModal {
Form3.Show
repeat {
Form3.ProcessMessages;
[F7 Taste wird losgelassen ->] Form3.OnKeyUp
}
Form3.Hide;
}
}
Du kannst das ganze über eine Variable lösen, die du vor dem Aufruf von Form3.ShowModal z.B. auf True setzt und dann in Form3.OnKeyUp nur reagierst, wenn diese Variable False ist, und wenn sie True ist, setzt du sie auf False.