![]() |
Letzte gedrückte Taste aus dem System Speicher löschen ???
Guten Abend,
ich benutze das "KeyUp" Event wenn die Taste VK_RETURN" gedrückt wird. Nun öffnet sich ein weiteres Formaular, wo es nur möglich ist mit der Taste "Enter", das Formular zu schließen. Nach dem Schließen wird sofort das Formular wieder geöffnet. Es scheint, dass sich das System die letzte Taste merkt und wieder ausführt. In "C" konnte man den Speicher leeren. Geht das auch in Delphi? Wenn ja, wie? Vielen Dank im voraus. Sven |
Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Hallo!
Hilft vielleicht schon ein simples
Delphi-Quellcode:
am Ende der OnKeyUp-Ereignisbehandlung?
Key:= 0;
|
Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Das war es noch nicht. Vielleicht sollte ich mal noch etwas mehr erklären.
Ich habe 2 Formulare. Formular 1 ist das Hauptformular. Formular 2 dient als Anzeige von Daten. Es besitzt nur eine Aktionskomponte (Close Button). Alles andere sind Anzeige Komponenten. Ich öffne Formular 2 mit "ShowModal". Im KeyUp Ereignis des Formular 1 habe ich eingestellt, wenn die Enter Taste gedrückt wird, das Formular 2 geöffnet wird. Der Focus ist dann sofort auf dem CLose Button, welchen ich wiederum mit der Enter Taste betätigen kann. Wenn ich das aber mache, wird das Formular 2 geschlossen und sofort wieder aufgemacht. Irgendwie merkt er sich die Enter Taste aus dem Formular 2 und sendet es wieder an das Formular 1. Wie kann ich die letzte Aktion, sprich die Enter Taste aus dem System Speicher löschen? Oder gibt es eine andere bessere Lösung? Vielen Dank. Sven |
Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Hallo
Kannst du nicht OnKeyDown nehmen? |
Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Zitat:
falls das so ist: ich würde dem Formular1 ein boolean zufügen Form2Open, das mit dem ShowModal-Aufruf gesetzt wird. Ist es True, so wird einfach Formular2 nicht geöffnet, aber das Flag auf false zurückgesetzt. Alternativ kannst du auch die Eigenschaft IsVisible (oder so ähnlich, hab grade den Delphi-PC nicht am Laufen) von Formular2 nehmen, grundsätzlich jedenfalls machst du Form2 nur auf, wenn sie nicht schon offen ist. Falls das nicht funktioniert: Form2 setzt beim Schliessen ein Flag JustClosed, das fragt Form1 ab und setzt es zurück, öffnet aber nicht Form2 wenn es gesetzt war. Je nach Reihenfolge der Ereignisse funktioniert immer etwas in der Art. Wenn man es ganz kompliziert machen will, kann man statt einfacher Flags auch Semaphore u.ä. nehmen, das macht mehr Eindruck. Gruss Reinhard |
Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Super..das KeyDown Ereignis bringt das gewünschte Ziel.
Dank an alle. Schönes Wochenende. |
AW: Re: Letzte gedrückte Taste aus dem System Speicher löschen ?
Zitat:
Bei mir funktioniert folgender Code nicht:
Delphi-Quellcode:
Zwar wird - wenn ich das '&' (Shift + 6) drücke - Key auf 0 gesetzt in meinem Edit1 erscheint dennoch das unliebsame '&'. Den Umweg über OnKeyPress(); wollte ich nicht gehen, weil ich in meinem Programm bereits eine sehr umfangreiche Procedure für OnKeyDown habe und es spätestens in ein paar Jahren sehr umständlich in der Wartung wird.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Case Key Of 54 : If (ssShift in Shift) Then Key:=0; // '&' einfach ignorieren End; Caption:=IntToStr(Key); end; end. Wo liegt der Fehler bei mir? Sollte es am Compiler von TurboDelphi liegen? Ich wollte kein neues Thema aufmachen, weil schon die Frage wie die sprichwörtliche Faust aufs Auge passt und ich es daher sinnlos fand, genau dasselbe Thema erneut aufzumachen... Gruß, Alex |
AW: Letzte gedrückte Taste aus dem System Speicher löschen ???
Das wird die Taste 38 (& eben) sein, denn wie du selbst schreibst, ist es ja eben nicht das Zeichen '6', sondern das Zeichen '&', das gedrückt wird. ;-)
|
AW: Letzte gedrückte Taste aus dem System Speicher löschen ???
Hast du KeyPreview der Form auf True?
Ansonsten würde ich direkt im OnKeyDown-Event des Edits aggieren, vielleicht schafft das ja Abhilfe. |
AW: Letzte gedrückte Taste aus dem System Speicher löschen ???
Danke für die Antworten trotz des alten Themas!
Zitat:
Zitat:
Hat schonmal jemand ein leeres Programm erstellt, ein TEdit draufgezogen und meinen Code von oben probiert, der nicht TurboDelphi hat? Ich hatte schon einmal Merkwürdigkeiten in TurboDelphi, die in anderen Delphi-/Compiler-Versionen nicht existierten... Das hier funktioniert übrigens auch nur insoweit, als Sondertasten wie Einf, Pos1, Bild, Pfeil hoch, runter etc. nicht geht, Buchstaben, Zahlen etc. aber in das TEdit eingetragen werden:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin Key:=0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz