Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschiedliches Verhalten mit und ohne Haltepunkt (https://www.delphipraxis.net/185813-unterschiedliches-verhalten-mit-und-ohne-haltepunkt.html)

Sven M. 8. Jul 2015 10:19

Delphi-Version: XE8

Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Hi zusammen,
ich habe eine Klasse, die die Kommunikation und Ansteuerung einiger Displays kapselt. Das ganze läuft via RS485 und TApdComPort. Nun will ich, je nach Zustand, die Displays etwas anzeigen lassen.

Delphi-Quellcode:
  if Key=VK_F10 then
  begin
    case Display.Status of
      Virgin: Display.DoEightTest;
      Initialized: Display.DoEightTest;
      Eights: Display.ShowHardwareAdresses;
      Adresses: Display.Initialize;
    end;
  end;
So viel vorab: Wennn ich die Prozeduren via Buttons aufrufe funktioniert das problemlos und alle Displays tun, was sie sollen.
Drücke ich aber F10 (KeyPreview=True), so wird offenbar nur jeder zweite Tastendruck erkannt. Warum auch immer.
Setze ich nun aber einen Haltepunkt auf die "case.."-Zeile funktioniert auch das problemlos und direkt beim ersten Tastendruck.



Ich bitte um Ratschläge, weil ich etwas ratlos bin...:D

baumina 8. Jul 2015 10:37

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Sollte dein Fenster ein Menü haben, wird dieses mit der Taste F10 aktiviert, das ist in Windows so definiert.

Sven M. 8. Jul 2015 10:46

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Hat es nicht. ;)


Die Deklaration der Form sieht so aus:
Delphi-Quellcode:
type
  TfrmLogin = class(TForm)
    Image1: TImage;
    lblLogin: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private-Deklarationen }
    Display: TDisplayCommunication;
  public
    { Public-Deklarationen }
end;

baumina 8. Jul 2015 10:53

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Und wenn du nach der Behandlung Key auf 0 setzt?
Delphi-Quellcode:
Key := 0;

Blup 8. Jul 2015 11:55

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Ich würde in der Anwendung für diesen Zweck einen Keyboard-Hook setzen.
Der funktioniert, egal welches Formular oder Steuerelement deiner Anwendung den Focus hat.

Sven M. 8. Jul 2015 13:54

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Zitat:

Zitat von baumina (Beitrag 1308087)
Und wenn du nach der Behandlung Key auf 0 setzt?
Delphi-Quellcode:
Key := 0;

Das funktioniert hervorragend. Aber warum? :D

BadenPower 8. Jul 2015 15:31

AW: Unterschiedliches Verhalten mit und ohne Haltepunkt
 
Zitat:

Zitat von Sven M. (Beitrag 1308091)
Zitat:

Zitat von baumina (Beitrag 1308087)
Und wenn du nach der Behandlung Key auf 0 setzt?
Delphi-Quellcode:
Key := 0;

Das funktioniert hervorragend. Aber warum? :D

Weil dann der Tastendruck als behandelt gilt und Windows bzw. weitere Behandlungsroutinen nicht noch etwas damit machen möchte/n.


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