Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnKeyUp – Übergreifend...??? (https://www.delphipraxis.net/134-onkeyup-8211%3B-uebergreifend.html)

Gast 13. Jun 2002 10:08


OnKeyUp – Übergreifend...???
 
Hi, :D

Ich habe ein Forumular (Form2) (FormStyle: fsMDIChild)

Aus diesem Formular erzeuge ich ein anderer Formular für die Suche (Form3) (FormStyle: fsNormal).

Auf dem From3 habe ich NUR ein TEdit Feld mit:


[code:1:5059303266]
procedure Tform3.Edit1KeyUp(Sender: TObject; var Key: Word;

sakura 13. Jun 2002 10:23

Das einfachste wäre wohl den Beep auf das OnKeyPress Ereignis zu legen, anstelle des OnKeyUp.

P.S. Ist es nicht nervig, dass der Rechner andauernd piept :?:

Gast 13. Jun 2002 10:31

Hallo Sakura, :D

natürlich Beep ist hier nur als Beispiel gemeint..., da wird dort was anderes ausgeführt...

und es ist wichtig, dass dies genau dort passiert...

Nachtrag

Das Form3 wird natürlich in dem OnKeyDown-Ereignis des Form2 erzeugt...


Gruß

Paul Jr.

jbg 13. Jun 2002 10:45

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.

sakura 13. Jun 2002 10:45

Dann muss ich Dich leider erst einmal vertrösten, da mir auf die Schnelle auch keine Lösung einfällt.

Das Problem ist, daß das neue Form (3) [intern] beim OnKeyPress Event geöffnet wird und sofort den Fokus erhält. Anschließend wird die F7-Taste losgelassen. Da Form (3) den Fokus hat, geht das OnKeyUp Ereignis an dieses Form...

Gast 13. Jun 2002 11:02

Hallo jbg, Hallo Sakura,


Die Erklärung von jbg hat mir die Augen geöffnet... :shock:

Natürlich...wenn mein Edit1-Feld als erster den Focus erhält...dann wird sein OnKeyUp Ereignis ausgeführt...

Ich habe also jetzt noch einen Edit-Feld dazu gefügt und die Tabulatoren- Reihenfolge geändert... so, dass das Feld mit dem Ereignis OnKeyUp... als zweite an der Reihe ist...


Und es klappt... :D

Danke

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz