Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter" (https://www.delphipraxis.net/155862-jvcl-tjvfilenameedit-feuert-onkeypress-nicht-bei-enter.html)

ralfiii 10. Nov 2010 17:05

JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter"
 
Die TJvFilenameEdit Komponente feuert den OnKeyPress-Event nicht wenn man "Enter" drückt.

Nach ein wenig Source-lesen: Kommt scheinbar von der Option acoAutoSuggest.
Sollte der Event nicht trotzdem gefeuert werden?
Blöderweise find ich nicht den Schuldigen der das Enter schluckt.

Hilfe!
Danke,
Ralf

shmia 10. Nov 2010 17:14

AW: JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter"
 
Ich frage mich, weshalb du das Event OnKeyPress überhaupt brauchst. :glaskugel:
Was soll passieren, wenn der Benutzer Enter drückt?
Oder wäre es nicht besser, das Event OnExit zu benützen?

toms 10. Nov 2010 17:15

AW: JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter"
 
Wird OnKeyDown/OnKeyUp ausgelöst?

ralfiii 10. Nov 2010 17:37

AW: JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter"
 
Zitat:

Zitat von toms (Beitrag 1060813)
Wird OnKeyDown/OnKeyUp ausgelöst?

Ja, wird ausgelöst. Wär' sicher ein Workaround. Danke für die Anregung.

@shmia: Auf ein TAB zu warten ist für meine User sicher unpassend. Absolute Non-Computermenschen. Ich find' Enter zum Validieren ja sehr passend.

Der Komponente fehlt übrigens auch noch ein Event wenn ein File reingezogen wurde. (bei AcceptFiles=True)

shmia 10. Nov 2010 18:00

AW: JVCL: TJvFilenameEdit feuert OnKeyPress nicht bei "Enter"
 
Zitat:

Zitat von ralfiii (Beitrag 1060815)
Auf ein TAB zu warten ist für meine User sicher unpassend. Absolute Non-Computermenschen.

Nun dann wäre es sicher sinnvoll, wenn man an zentraler Stelle etwas Code einbaut,
damit beim Drücken der Enter/Return-Taste genau das gleiche passiert, als ob man den Tab gedrückt hat.
Delphi-Quellcode:
// das Property KeyPreview des Formulars muss auf True gesetzt werden
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   case Key of
   VK_RETURN:
      begin
         // Zum nächsten Control in der Taborder weiterschalten.
         // Falls Shift gedrückt ist wird zum vorherigen Contol umgeschaltet.
         Key := 0;
         Perform(WM_NEXTDLGCTL, Ord(ssShift in Shift), 0);
      end;
   end;
end;
Wenn dann die Entertaste bewirkt, dass automatisch das nächste Control angesprungen wird,
dann kannst du wieder das Event OnExit verwenden.

Für Dich wird es einfacher, denn so brauchst du dich nur auf den Fall konzentrieren,
dass das JcFilenameEdit verlassen wird.
Wenn du es nach deiner Methode machst, dann musst du die Fälle "Enter gedrückt" und
"mit Maus auf anderes Control geklickt" separat behandeln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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