Entwickler-Ecke
Sonstiges (Delphi) - Virtual Key für "Eingabetaste" ???
cherry - Di 09.08.05 08:29
Titel: Virtual Key für "Eingabetaste" ???
Hi
Ein TEdit sollte auf das Tastenereignis Enter reagieren.
Ich habs mit dem KeyUp ereignis gemacht, aber kann mir
bitte jmd den Virtual Key der Enter Taste übermitteln?!
:evil: THX
Moderiert von
Tino: Topic aus VCL (Visual Component Library) verschoben am Di 09.08.2005 um 11:03
WeBsPaCe - Di 09.08.05 08:31
:gruebel:
cherry - Di 09.08.05 08:38
super sexy..
danke...
jetzt gibt es aber immer wenn ich enter drücke so einen
beschissnen piepston, kann ich den irgendwie ausschalten? :roll:
WeBsPaCe - Di 09.08.05 08:41
cherry hat folgendes geschrieben: |
jetzt gibt es aber immer wenn ich enter drücke so einen
beschissnen piepston, kann ich den irgendwie ausschalten? :roll: |
:lol: Öh... kA, der gehört normalerweise zu Windows dazu. Kommt aber nicht immer, wenn du den ENTER drückst, oder? Hängt von dem ab, was du machst; deshalb: was machst du denn genau in dem Code-Abschnitt?
cherry - Di 09.08.05 08:45
Ich gebe eine Zahl in das Edit Feld ein, um bei Enter springt das
Query zum gewünschten Datensatz..
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TFrameStammdaten.Edit4KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var SQL1 : String; begin If Key = vk_return then begin try SQL1 := ' SELECT * FROM v_wp_wirtschaftsbetrieb' +' WHERE betr_ID = ' + Edit4.text +' ORDER BY betr_name'; with Datamodule1.ADOQuery1_betr_view do begin close; SQL.Clear; SQL.Add(SQL1); open; Tag := 3; end; except MessageDlg('#Fehler 387!'+#13#10+#13#10+'Die angegebene ID existiert leider nicht (mehr)! ' , mtError, [mbOk], 0); end; end; end; |
.. aber es ist mir allgemein aufgefallen, dass dieser Ton erscheint, wenn man in
einem Editfeld Enter drückt. Egal ob eine Funktion hinterlegt ist oder nicht.
WeBsPaCe - Di 09.08.05 08:48
Bist du dir sicher, dass der Piepser nicht von dem MessageDlg kommt? Ansonsten, wieso nimmst du KeyUp und nicht OnKeyPress? Das ist eher für sowas gedacht, wie du's vorhast. Probier's mal damit. ;)
cherry - Di 09.08.05 08:53
Da passiert genau dasselbe!
Und übrigens wird der MessageDlg nur ausgeführt bei einer Exception,
zum Beispiel wenn die ID nicht gefunden werden kann!
Danke trotzdem
WeBsPaCe - Di 09.08.05 09:00
cherry hat folgendes geschrieben: |
Da passiert genau dasselbe! |
Mhmm... Okay...
cherry hat folgendes geschrieben: |
Und übrigens wird der MessageDlg nur ausgeführt bei einer Exception, zum Beispiel wenn die ID nicht gefunden werden kann! |
Weiß ich, weiß ich. Soviel erkenn' ich dann doch noch. ;) Aber hätte ja sein können, dass du das Programm bei dir zu Hause testest und da keine Datenbank hast und deshalb immer die Exception eintritt oder was weiß ich was. :tongue:
cherry hat folgendes geschrieben: |
Danke trotzdem |
Nicht so schnell aufgeben. Was auf jeden Fall gehen sollte, ist, wenn du einfach direkt hinter das Edit einen Button setzt und dem den Code aus
KeyPress ins
OnClick gibst. Dann setzt du noch
Default vom Button auf
True. ;)
cherry - Di 09.08.05 09:11
Das wäre eine Möglichkeit... die ich leider ausschliessen muss.
Habe einen Prontscreen von meinem Programm mitgeschickt.
Dann erkennt man, dass sich hinter der Betriebsnummer ein Button schlecht machen
würde! :?
WeBsPaCe - Di 09.08.05 09:29
Also wenn dir der Piepser so wichtig ist, dann kannste dir ja auch den Button auf dein Formular setzen und ihm dann bei TForm.Create die Eigenschaft Width oder Height auf 0 setzen. Funktioniert noch, hab's ausprobiert. ;)
So wie's im Anhang ist, sieht's dann zur Entwicklungszeit aus. Startest du das Programm ist er weg. ;)
Lannes - Di 09.08.05 09:35
Hallo,
cherry hat folgendes geschrieben: |
...jetzt gibt es aber immer wenn ich enter drücke so einen
beschissnen piepston, kann ich den irgendwie ausschalten? :roll: |
der Ton wird ausgegeben weil das Editfeld den Zeilenumbruch durch die Enter-Taste nicht erzeugen kann, daher der Warnton -ist Windows-Standard-
in deinem Code wird VK_RETURN ausgewertet, aber auch an Windows weitergereicht.
Das musst Du unterbinden:
Delphi-Quelltext
1: 2: 3: 4: 5:
| If Key = vk_return then begin key := 0; try SQL1 := ' SELECT * FROM v_wp_wirtschaftsbetrieb' |
cherry - Di 09.08.05 10:15
gute idee..
Lannes hat folgendes geschrieben: |
in deinem Code wird VK_RETURN ausgewertet, aber auch an Windows weitergereicht.
Das musst Du unterbinden: |
funktioniert aber so... :
Lannes hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5:
| If Key = vk_return then begin key := 0; try SQL1 := ' SELECT * FROM v_wp_wirtschaftsbetrieb' | |
.. leider nicht ! :(
WeBsPaCe - Di 09.08.05 10:19
Bist du jetzt im OnKeyPress oder im OnKeyUP drin?! :gruebel:
cherry - Di 09.08.05 10:22
Im OnKeyDown natürlich, habe aber auch OnKeyUp versucht.
WeBsPaCe - Di 09.08.05 10:25
cherry hat folgendes geschrieben: |
Im OnKeyDown natürlich, habe aber auch OnKeyUp versucht. |
Im
OnKeyDown solltest du's mal so versuchen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| If Key = vk_return then begin key := #0; try SQL1 := ' SELECT * FROM v_wp_wirtschaftsbetrieb' [...] |
Bei mir funktioniert das... :gruebel:
cherry - Di 09.08.05 10:33
WeBsPaCe hat folgendes geschrieben: |
Bei mir funktioniert das... :gruebel: |
Das kann ich dir fast nicht abkaufen, bei mir gibt es einen Syntaxfehler aus!
[Fehler] FStammdaten.pas(730): Inkompatible Typen: 'Word' und 'Char'
Ist ja auch klar eigentlich, denn key is ja vom typ Word!?
WeBsPaCe - Di 09.08.05 10:36
Im
OnKeyPress eines
TEdit nicht. ;)
Delphi-Quelltext
1:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); |
CK_CK - Di 09.08.05 10:37
Was haltet ihr denn dann von:key := Ord(#0); ;)
CK_CK
WeBsPaCe - Di 09.08.05 10:40
lol...
Key erwartet ein
Char als Wert. Du übergibst ihm aber ein Integer... ;)
:arrow:
Zitat: |
[Error] Unit1.pas( 28 ): Incompatible types: 'Char' and 'Integer' |
cherry - Di 09.08.05 10:48
WeBsPaCe hat folgendes geschrieben: |
Im OnKeyPress eines TEdit nicht. :wink: |
achso, du hast drum geschrieben...
WeBsPaCe hat folgendes geschrieben: |
Im OnKeyDown solltest du's mal so versuchen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| If Key = vk_return then begin key := #0; try SQL1 := ' SELECT * FROM v_wp_wirtschaftsbetrieb' [...] | |
.. ok, ich probiers nochmal...
Lannes - Di 09.08.05 10:49
Hallo,
jetzt mal alle im Überblick:
Delphi-Quelltext
1: 2: 3:
| OnKeyPress(...; var Key: Char); OnKeyDown(...; var Key: Word;...); OnKeyUp(...; var Key: Word;...); |
WeBsPaCe - Di 09.08.05 10:50
cherry hat folgendes geschrieben: |
.. ok, ich probiers nochmal... |
Jawoll... Tu' das... ;)
@
CK_CK: War nicht böse gemeint. ;)
cherry - Di 09.08.05 10:52
aber wenn ich es im OnKeyPress Ereignis mache, funktioniert die If Abfrage
mit vk_return leider nicht!
Wie regle ich das jetzt?
WeBsPaCe - Di 09.08.05 10:54
Delphi-Quelltext
1: 2: 3:
| if Key = #13 then begin [...] |
;)
cherry - Di 09.08.05 10:56
Cool
Jetzt klappt alles bestens!
Danke für eure Hilfe...
Schönen Tag noch..
WeBsPaCe - Di 09.08.05 10:59
cherry hat folgendes geschrieben: |
Danke für eure Hilfe... |
Kein Problem. ;)
cherry hat folgendes geschrieben: |
Schönen Tag noch.. |
Joa, dir auch. ;)
slt, WeBBy
DaRkFiRe - Di 09.08.05 11:07
@WebSpace: das mit Ord is nich Dein Ernst?
Ord wandelt Char in ASCII Code (also BYTE) um (Typecast von CHAR nach BYTE)
Ach ja - und wie Lannes schon sagte
Keypress: Key:=#0, KeyUp/Down: Key:=0
@CK_CK: Ord(#0) gibt 0 zurück, also bitte, warum nicht gleich 0 schreiben? Wenn Du Glück hast, optimiert der Delphi-Compiler das.
WeBsPaCe - Di 09.08.05 11:14
DaRkFiRe hat folgendes geschrieben: |
@WebSpace: das mit Ord is nich Dein Ernst?
Ord wandelt Char in ASCII Code (also BYTE) um (Typecast von CHAR nach BYTE) |
Blablubb... Da ist einiges verrutscht... ;) Ich wusste nur, dass es falsch war, hab aber den gewünschten Wert mit dem vorhandenen verwechselt... :roll:
Ord(X: Ordinal) will ein Char als Parameter. Das ist richtig. Somit ist also #0 korrekt. Jedoch bekommen wir als Rückgabewert von
Ord(X: Ordinal) ein Integer (Char :arrow: Integer). Wir wollen aber kein Integer. Wir wollen ein Char. Hab's jetzt verbessert... ;)
Danke! :tongue:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!