Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ton OnKeyPress (https://www.delphipraxis.net/2981-ton-onkeypress.html)

Pseudemys Nelsoni 16. Feb 2003 23:07


Ton OnKeyPress
 
moin,

ich habe folgenden befehl bei "OnKeyPress" meines edit feldes:

Delphi-Quellcode:
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;
funzt auch alles, aber bei jedem enter drücken gibt es einen piepton...woher kommt der und wie schalt ich das ab?

gruss silent

City Light 17. Feb 2003 00:03

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;

Pseudemys Nelsoni 17. Feb 2003 00:10

danke, funzt super ;)

kannst mir auch noch sagen was #0 genau ist, bzw bewirkt?

gruss silent

City Light 17. Feb 2003 00:19

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.

Robert 17. Feb 2003 00:23

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!"

City Light 17. Feb 2003 00:29

Danke Robert

für die Vorbildliche Schulung :lol:
wieder was dazu gelernt danke

Pseudemys Nelsoni 17. Feb 2003 00:31

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

City Light 17. Feb 2003 00:35

nein ,halte doch mal deine Entertaste auf entlos gedrückt :mrgreen:

Pseudemys Nelsoni 17. Feb 2003 03:02

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 ;)

Brüggendiek 17. Feb 2003 06:26

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 14:58 Uhr.
Seite 1 von 2  1 2      

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