![]() |
Ton OnKeyPress
moin,
ich habe folgenden befehl bei "OnKeyPress" meines edit feldes:
Delphi-Quellcode:
funzt auch alles, aber bei jedem enter drücken gibt es einen piepton...woher kommt der und wie schalt ich das ab?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if key = #13 then begin if edit1.Text <> '' then begin memo1.Lines.Add('[' + Nick + '] ' + edit1.text); idirc1.Say('#chan', edit1.text); edit1.Text := ''; end; end; end; gruss silent |
Delphi-Quellcode:
{mit....}
Key := #0; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin if edit1.Text <> '' then begin memo1.Lines.Add('[' + Nick + '] ' + edit1.text); idirc1.Say('#chan', edit1.text); edit1.Text := ''; end; Key := #0; end; end; |
danke, funzt super ;)
kannst mir auch noch sagen was #0 genau ist, bzw bewirkt? gruss silent |
Hallo silent
ASCII-Zeichen = #0 Leider weiß ich das auch nicht so genau in moment ,aber was ich sagen kann ist das Key := #0; eine taste ist nur welche jetzt weiß ich auch nicht #9 = tabtaste #13 = entertaste usw. |
Nee nee - also der ASCII-Code #0 kann mit keiner Tastenkombination erzeugt werden - den kann man nicht eingeben. Wenn dieser Wert auf Key zugewiesen wird, wird die weitere Abarbeitung dieser Tastatureingabe (in diesem Fall Enter) abgebrochen und gilt als behandelt. Lässt Du ihn auf #13, dann tritt die weitere Abarbeitung ein (versuch's mal mit nem Memo *g*).
Also die Zuweisung bei OnKeyPress auf #0 stoppt die weitere Verarbeitung der Tastatureingabe. Bei OnKeyDown / -up die Key-Variable (ein Word, kein Char!) auf 0 setzen und die Verarbeitung wird nicht fortgesetzt. Man signalisiert Windows damit, dass man den Code abgefangen hat und verarbeitet hat. "Windows, Du brauchst Dich nich mehr drum zu kümmern!" |
Danke Robert
für die Vorbildliche Schulung :lol: wieder was dazu gelernt danke |
ah danke ihr 2 ;)
das piepen hat schon auf die dauer genervt :D btw: wieso sollte da mehr abgearbeitet werden, sagt das "end;" nicht das ende ist? gruss silent |
nein ,halte doch mal deine Entertaste auf entlos gedrückt :mrgreen:
|
jo leuchtet mir auch irgendwie ein, aber für mich heisst
"if key = #13 then" = "wenn enter gedrückt wird" aber sie wird ja nur 1 mal gedrückt oder? heh sorry schnall das nicht so ganz, ich kapier nur gerne was ich immer schreibe ;) danke btw ;) |
Hallo Silent!
Mit dem OnKeyPressed-Ereignis erhält Dein Programm die Chance, auf das eingegebene Zeichen zu reagieren, bevor die "normalen" Routinen der Komponente was damit anfangen. Es gibt also quasi eine vordefinierte OnKeyPressed, die auf jeden Fall und nach der benutzerdefinierten Routine bearbeitet wird. Findet eine tEdit-Komponente ein Return (#13 oder #$0A), dann ist das ein ungültiges Zeichen und wird mit einem Piepser beantwortet. Nachdem Deine OnKeyPressed-Routine die vor Dir gewünschte Aktion beendet hat, muß natürlich noch irgendwie signalisiert werden, daß das eingegebene Zeichen schon bearbeitet wurde. Dazu dient #0. Gruß Dietmar Brüggendiek |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 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-2025 by Thomas Breitkreuz